R, Python 분석과 프로그래밍의 친구 (by R Friend) :: [PostgreSQL, Greenplum] 산술연산자, 비교연산자, 논리연산자, 기타연산자 (Operators) |
您所在的位置:网站首页 › sql错误42883 › R, Python 분석과 프로그래밍의 친구 (by R Friend) :: [PostgreSQL, Greenplum] 산술연산자, 비교연산자, 논리연산자, 기타연산자 (Operators) |
이번 포스팅에서는 PostgreSQL, Greenplum DB의 4가지 연산자(Operators)에 대해서 알아보겠습니다. 산술 연산자 (Arithmetic Operators)비교 연산자 (Comparison Operators)논리 연산자 (Logical Operators)비트 연산자 (Bitwise Operators)(1) 산술 연산자 (Arithmetic Operators) * Reference: https://www.postgresql.org/docs/9.4/functions-math.html 산술연산자는 어려운 것은 없으므로 추가 설명은 생략하겠으며, 다만 나눗셈(/)에 대해서만 조심해야하는 부분이 있어서 추가 설명을 하겠습니다. 나눗셈의 분자와 분모가 모두 정수(int)인 경우 나눗셈(/)을 하면 정수의 몫을 반환하며, 소수점 부분은 무시가 되므로 유의할 필요가 있습니다. 만약 소수점자리까지의 나눗셈 계산 결과가 모두 필요한 경우 분자나 혹은 분모를 NUMERIC 혹은 FLOAT 로 데이터 형태 변환을 해주어야 합니다. 아래에 간단한 예를 들어보겠습니다. (이걸 신경을 안쓰면 나중에 소수점 부분의 결과가 무시된걸 모르고서 원하는 값이 아니라면서 당황하는 수가 생깁니다.) DROP TABLE IF EXISTS test; CREATE TABLE test ( a int , b int ); INSERT INTO test VALUES (2, 4), (3, 5), (4, 7); SELECT * FROM test; ------------- a b ------------- 2 4 3 5 4 7
-- 나눗셈 결과의 소수점 자리 무시 SELECT b / a AS div FROM test; ---------- div ---------- 2 1 1 -- 분자를 Numeric으로 형 변환하면 나눗셈 결과 소수점 자리 나옴 SELECT b::numeric / a AS div_1 FROM test; ---------- div_1 ---------- 2.0000000000000000 1.6666666666666667 1.7500000000000000 -- 분모를 Numeric으로 형 변환하면 나눗셈 결과 소수점 자리 나옴 SELECT b / a::numeric AS div_2 FROM test; ---------- div_2 ---------- 2.0000000000000000 1.6666666666666667 1.7500000000000000 계승(factorial)의 경우 SELECT 5!, SELECT !!5 처럼 '!'가 한개냐, 두개냐에 따라서 정수를 써주는 위치가 달라집니다. 절대값(Absolute value)를 구할 때는 '@ col_nm' 혹은 '@ 숫자' 를 해주면 되는데요, 이때 '@' 다음에 스페이브 1칸을 띄워주어야 합니다. (만약 '@' 다음에 한 칸 띄우지 않으면 SQL Error [42883]: ERROR: operator does not exist: @- numeric 와 같은 ERROR가 발생합니다.) 산술 연산을 한 후에 'AS col_nm' 처럼 alias 별명 칼럼 이름을 부여할 수 있습니다. (2) 비교 연산자 (Comparison Operators) * Reference: https://www.postgresql.org/docs/9.4/functions-comparison.html 비교 연산자(comparison operators)도 어려운 것은 없으므로 길게 설명할 필요는 없어보입니다. 아래의 간단한 예를 살펴보시기 바랍니다. 비교 연산자는 WHERE 조건절에서 사용되어 두 값을 비교하게 되며, 비교 연산자의 조건을 만족하면 참(TRUE)을, 비교 연산자의 조건을 만족하지 않으면 거짓(FALSE)을 반환합니다. 이를 이용해서 비교 연산자에 대해 참(TRUE)인 조건을 만족하는 값만을 선택(SELECT)해 올 수 있습니다. ----------------------- -- Comparison Operators ----------------------- DROP TABLE IF EXISTS comparison; CREATE TABLE comparison ( a int , b int ); INSERT INTO comparison VALUES (1, 1), (1, 2), (2, 1), (2, 2); SELECT * FROM comparison; ---------- a b ---------- 1 1 1 2 2 1 2 2 -- equal to SELECT * FROM comparison WHERE a = b; ---------- a b ---------- 1 1 2 2 -- not equal SELECT * FROM comparison WHERE a != b; SELECT * FROM comparison WHERE a b; ---------- a b ---------- 1 2 2 1 -- greater than SELECT * FROM comparison WHERE a > b; ---------- a b ---------- 2 1 -- less than SELECT * FROM comparison WHERE a = b; ---------- a b ---------- 1 1 2 1 2 2 -- less than or equal to SELECT * FROM comparison WHERE a = greater than or equal to) 비교 연산자를 써주어야 합니다. -- SQL Error [42883]: ERROR: operator does not exist: integer =! integer SELECT * FROM comparison WHERE a =! b; -- SQL Error [42883]: ERROR: operator does not exist: integer >< integer SELECT * FROM comparison WHERE a > b; -- SQL Error [42883]: ERROR: operator does not exist: integer =< integer SELECT * FROM comparison WHERE a = |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |