여러 개의 값에 대한 조작

는는·2023년 3월 17일
0

SQL - 공부

목록 보기
12/13

문자열 연결하기

문자열을 연결하는 쿼리

SELECT user_id
, CONCAT(pref_name, city_name) AS pref_city
FROM 
mst_user_location
;

분기별 매출 증감 판정하기

q1보다 q2의 매출이 많은 경우에 '+', 같은 경우에는 공백, 적은 경우에는 '-'를 출력합니다.
SIGN함수는 매개변수가 양수라면 1, 0이라면 0, 음수라면 -1를 리턴하는 함수 입니다.

SELECT year, q1,q2
,CASE WHEN q1 < q2 THEN '+' 
WHEN q1=q2 THEN ' ' ELSE '-' END judge_q1_q2
,q2 - q1 diff_q2_q1, SIGN(q2 - q1) sign_q2_q1
FROM quarterly_sales
ORDER BY year;

연간 최대/최소 4분기 매출 찾기

컬럼 값에서 최댓값 또는 최솟값을 찾을 때는 greatest 함수 또는 least 함수를 사용합니다.
대부분 SQL 쿼리 엔진에서 구현되고 있습니다.

SELECT year
,greatest(q1, q2, q3, q4) greatest_sales
,least(q1, q2, q3, q4) least_sales
FROM quarterly_sales
ORDER BY year;

연간 평균 4분기 매출 계산하기

단순하게 구하기

SELECT year, (q1 +q2 +q3 + q4) / 4 average
FROM quarterly_sales
ORDER BY
year;

정수 자료형의 데이터 나누기

SELECT dt, ad_id , clicks / impressions AS ctr
,CAST(clicks AS double precision) / impressions AS ctr , 100.0 * clicks / impressions AS ctr_as_percent
FROM advertising_stats
WHERE
dt = '2017-04-01'
ORDER BY
dt, ad_id ;

0으로 나누는 것 피하기

2017년 4월 2일 데이터는 impressions이 0 입니다.
0으로 나누게 되면 오류가 발생합니다. case 식으로 사용해서 0인지 아닌지 확인하는 것이 좋습니다,

SELECT dt, ad_id
,CASE WHEN impressions > 0 THEN 100.0 * clicks / impressions END AS ctr_as_percent_by_case 
,100.0 * clicks / NULLIF(impressions, 0) AS ctr_as_percent_by_null
FROM advertising_stats
ORDER BY dt, ad_id ;

두 값의 거리 계산하기

일차원 데이터의 절댓값과 제곱 평균 제곱근을 계산하는 쿼리

SELECT abs(x1 -x2) AS abs,
sqrt(power(x1-x2, 2)) AS rms
FROM location_1d ;

xy 평면 위에 있는 두 점의 우클리드 거리 계산하기

이차원 테이블에 대해 제곱 평균 제곱근(유클리드 거리)을 구하는 쿼리

0개의 댓글