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)

태그: ,

카테고리:

업데이트: