고득점 키트
1.인기있는 아이스크림
•
order by : 정렬
SELECT FLAVOR
FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID;
SQL
복사
2. 재구매가 일어난 상품과 회원 리스트 구하기
•
group by , having
SELECT USER_ID
,PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) >= 2
ORDER BY USER_ID, PRODUCT_ID DESC;
SQL
복사
3. 오프라인/온라인 판매 데이터 통합하기
SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') AS SALES_DATE
,PRODUCT_ID
,IFNULL(USER_ID,NULL) AS USER_ID
,SALES_AMOUNT
FROM(
SELECT SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
UNION
SELECT SALES_DATE, PRODUCT_ID, NULL, SALES_AMOUNT
FROM OFFLINE_SALE
) A
WHERE DATE_FORMAT(SALES_DATE,'%Y-%m') = '2022-03'
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID;
SQL
복사
4. 흉부외과 또는 일반외과 의사 목록 출력하기
•
date_format : 날짜 포맷 변경하기
SELECT DR_NAME
,DR_ID
,MCDP_CD
,DATE_FORMAT(HIRE_YMD,'%Y-%m-%d') AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD IN ('CS','GS')
ORDER BY HIRE_YMD DESC, DR_NAME;
SQL
복사
5. 3월에 태어난 여성 회원 목록 출력하기
SELECT MEMBER_ID
,MEMBER_NAME
,GENDER
,DATE_FORMAT(DATE_OF_BIRTH,'%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE (DATE_FORMAT(DATE_OF_BIRTH,'%m') = 3
AND GENDER = 'W'
AND TLNO IS NOT NULL)
ORDER BY MEMBER_ID;
SQL
복사
6. 12세 이하인 여자 환자 목록 출력하기
•
IFNULL( 특정필드값, 대체할 값 ) : 특정필드의 값이 NULL이면 대체할 값으로 대체
SELECT PT_NAME
,PT_NO
,GEND_CD
,AGE
,IFNULL(TLNO,'NONE') AS TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME;
SQL
복사
7. 서울에 위치한 식당 목록 출력하기
SELECT i.REST_ID
,i.REST_NAME
, i.FOOD_TYPE
, i.FAVORITES
, i.ADDRESS
, round(avg(r.REVIEW_SCORE), 2) as SCORE
from REST_INFO i INNER JOIN REST_REVIEW r ON i.rest_id = r.rest_id
WHERE i.address like '서울%'
group by i.REST_ID, i.REST_NAME, i.FOOD_TYPE, i.FAVORITES, i.ADDRESS
order by SCORE desc, i.FAVORITES desc;
SQL
복사
8. 강원도에 위치한 생산공장 목록 출력하기
SELECT FACTORY_ID
,FACTORY_NAME
,ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '강원도%'
ORDER BY FACTORY_ID;
SQL
복사
9. 과일로 만든 아이스크림 고르기
SELECT F.FLAVOR
FROM FIRST_HALF F
INNER JOIN ICECREAM_INFO I ON F.FLAVOR = I.FLAVOR
WHERE F.TOTAL_ORDER > 3000 AND I.INGREDIENT_TYPE = 'fruit_based'
ORDER BY F.TOTAL_ORDER DESC;
SQL
복사
10. 모든 레코드 조회하기
SELECT ANIMAL_ID
,ANIMAL_TYPE
,DATETIME
,INTAKE_CONDITION
,NAME
,SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
SQL
복사
11. 역순 정렬하기
SELECT NAME
,DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;
SQL
복사
12. 아픈 동물 찾기
SELECT ANIMAL_ID
,NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
ORDER BY ANIMAL_ID;
SQL
복사
13. 어린 동물 찾기
SELECT ANIMAL_ID
,NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION <> 'Aged'
ORDER BY ANIMAL_ID;
SQL
복사
14. 여러 기준으로 정렬하기
SELECT ANIMAL_ID
,NAME
,DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC;
SQL
복사
15. 상위 N개 레코드
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1;
SQL
복사
16. 조건에 맞는 회원수 구하기
SELECT COUNT(DISTINCT USER_ID) AS USERS
FROM USER_INFO
WHERE DATE_FORMAT(JOINED,'%Y') = '2021'
AND AGE BETWEEN 20 AND 29;
SQL
복사
17. 조건에 맞는 도서 리스트 출력하기
SELECT BOOK_ID
,DATE_FORMAT(PUBLISHED_DATE,'%Y-%m-%d')
FROM BOOK
WHERE YEAR(PUBLISHED_DATE) = '2021'
AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE;
SQL
복사