[TIL] 24-10-08
1. GROUP BY Tip
SELECT SUBSTR(addr, 1, 2) "지역",
cuisine_type,
AVG(price) "평균 금액"
FROM food_orders
WHERE addr LIKE '%서울%'
GROUP BY SUBSTR(addr, 1, 2), cuisine_type
SELECT SUBSTR(addr, 1, 2) "지역",
cuisine_type,
AVG(price) "평균 금액"
FROM food_orders
WHERE addr LIKE '%서울%'
GROUP BY 1, 2
첫 번째와 같이 GROUP BY SUBSTR(addr, 1, 2), cuisine_type로 적을 수도 있지만,
두 번째와 같이 GROUP BY 1, 2로 짧게 적을 수 있음
2. SUBSTRING Tip
SELECT SUBSTR(email, 10) "도메인",
COUNT(1) "고객수",
AVG(age) "평균 연령"
FROM customers
GROUP BY 1
SUBSTR( 컬럼명, 시작 위치, 글자 수)에서 시작 위치부터 끝까지 불러오려면 글자 수 부분을 생략 후, SUBSTR( 컬럼명, 시작 위치)로 적어준다.
3. 조건에 따라 포맷을 다르게 변경해야 한다면(IF,CASE)
IF
SELECT restaurant_name,
IF(cuisine_type='Korean', '한식', '기타') "음식 타입"
FROM food_orders
사용방법: IF( 조건, 조건 충족할 때, 조건 미충족할 때)
CASE
SELECT CASE WHEN cuisine_type="Korean" THEN '한식'
WHEN cuisine_type IN ('Japanese', 'Chinese') THEN '아시아'
ELSE '기타'
END "음식타입"
FROM food_orders
사용방법
CASE WHEN 조건1 THEN 값(수식)1
WHEN 조건2 THEN 값(수식)2
ELSE 값(수식)3
END
4. Data Type 오류가 날 때
문자를 숫자로 Data Type 변경
CAST(IF(rating='Not given', '1', rating) AS DECIMAL)
숫자를 문자로 Data Type 변경
CONCAT(restaurant_name, '-', CAST(order_id AS CHAR)