현제의 현재이야기
SQL 정리 본문
1. 개수 제한
LIMIT 3
2. 날짜 사이
where sales_date between '2022-03-01' and '2022-03-31'
3. 한 줄 없애기
SELECT null as user_id,
4. 평균과 소수점 제한
SELECT ROUND(AVG(R.REVIEW_SCORE)
5. 문자열 검색
WHERE ADDRESS LIKE "서울%"
응용: 3월에 태어난 사람
WHERE DATE_OF_BIRTH LIKE '%-03-%'
6. IF 활용
SELECT CAR_ID, IF(SUM(IF('2022-10-16' BETWEEN START_DATE AND END_DATE, 1, 0)) >= 1, '대여중', '대여 가능') AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
- CAR_ID로 그룹되어 있을 때, '2022-10-16' 사이에 있으면 1씩 더해서 1이 넘으면 대여 중
- https://school.programmers.co.kr/learn/courses/30/lessons/157340
7. ~ 그룹 중에서 가장 ~한 것 찾아내기
SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('식용유', '과자', '국', '김치')
AND PRICE IN (
SELECT MAX(PRICE)
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('식용유', '과자', '국', '김치')
GROUP BY CATEGORY
)
GROUP BY CATEGORY, PRODUCT_NAME
ORDER BY MAX_PRICE DESC;
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE FAVORITES IN (
SELECT MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
)
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
- 서브쿼리 이용
8. 특정한 필드만
WHERE CATEGORY IN ('식용유', '과자', '국', '김치')
9. 필드 두개 순서 정하기
ORDER BY FIELD (ANIMAL_TYPE, 'Cat','Dog')
10. SELECT에서 중복 제거
SELECT YEAR(SALES_DATE) AS YEAR, MONTH(SALES_DATE) AS MONTH, U.GENDER, COUNT(DISTINCT O.USER_ID) AS USERS
- DISTINCT 이용
11. SELECT에서 단위 설정
SELECT ROUND(PRICE/10000, 0) * 10000 AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE
- 먼저 PRODUCT 테이블에서 PRICE 컬럼을 10000으로 나눈 뒤 반올림하여 10000을 곱한 새로운 컬럼인 PRICE_GROUP을 만듭니다.
- 새로운 컬럼을 기준으로 GROUP BY를 시행하고 COUNT(PRODUCT_ID)로 PRODUCTS 컬럼을 만들어 그룹별로 해당하는 상품의 수를 계산합니다
- 그리고 PRICE_GROUP를 기준으로 group을 정한다.
또 다른 예시
SELECT
cust_id,
cust_name,
cust_age,
CASE
WHEN cust_age >= 20 AND cust_age < 30 THEN '20s'
WHEN cust_age >= 30 AND cust_age < 40 THEN '30s'
WHEN cust_age >= 40 AND cust_age < 50 THEN '40s'
ELSE '50s or older'
END AS cust_age_group,
order_date,
product_name,
price
FROM
sales_info
WHERE
cust_age_group = '30s'
ORDER BY
order_date DESC;
- cust_age를 CASE WHEN 따라서 분류를 하고, 마지막 END AS로 컬럼 명을 정해준다.
- 이것을 WHERE에서 사용할 수 있다.
'etc' 카테고리의 다른 글
[GoLang] 잊지 말아야 할 것들 (0) | 2023.08.21 |
---|---|
SQL 서브쿼리 연습 (0) | 2023.04.25 |
AWS 1주차 (0) | 2023.01.12 |
EC2 배포 정리 (0) | 2023.01.08 |
새 토이 프로젝트 구상 (0) | 2022.08.15 |
Comments