공부기록/프로그래머스

[프로그래머스] MySQL (정리중)

메델 2023. 10. 13. 02:34

1. 역순 정렬하기 

SELECT name, datetime from animal_ins order by animal_id desc;

 

2. 여러 기준으로 정렬하기 

SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME ASC, DATETIME DESC;

 

3. 모든 레코드 조회하기

SELECT * FROM ANIMAL_INS;

 

4. 동물의 아이디와 이름

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS ORDER BY ANIMAL_ID;

 

5. 강원도에 위치한 생산공장 목록 출력하기

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY WHERE ADDRESS LIKE '강원도%' ORDER BY FACTORY_ID;

 

6. 상위 n개 레코드

SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1;

 

7.동명 동물 수 찾기

SELECT NAME, COUNT(ANIMAL_ID) "COUNT" FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(ANIMAL_ID)>1
ORDER BY NAME;

 

8. 아픈 동물 찾기

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION='SICK';

 

9. 인기 있는 아이스크림

SELECT FLAVOR FROM FIRST_HALF ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID ASC;

 

10. 조건에 맞는 회원 수 구하기

SELECT COUNT(USER_ID) "USERS" FROM USER_INFO WHERE JOINED LIKE '2021%' AND AGE>=20 AND AGE<=29;

 

11. 동물 수 구하기

SELECT COUNT(ANIMAL_ID) "COUNT" FROM ANIMAL_INS;

 

12. 최솟값 구하기

SELECT DATETIME "시간" FROM ANIMAL_INS ORDER BY DATETIME ASC LIMIT 1;

 

13. 이름이 있는 동물의 아이디

SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL;

 

14. 중복 제거하기

SELECT COUNT(DISTINCT NAME) "count" FROM ANIMAL_INS WHERE NAME IS NOT NULL;

 

15. 어린 동물 찾기

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION != 'Aged' ORDER BY ANIMAL_ID;

 

16. 나이 정보가 없는 회원 수 구하기

SELECT COUNT(USER_ID) AS "USERS" FROM USER_INFO WHERE AGE IS NULL;

 

17. 가장 비싼 상품 구하기

SELECT PRICE AS "MAX_PRICE" FROM PRODUCT ORDER BY PRICE DESC LIMIT 1;

 

18. 이름에 el이 들어가는 동물 찾기 

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE ANIMAL_TYPE = "Dog" AND NAME LIKE "%EL%" ORDER BY NAME;

 

19. 고양이와 개는 몇 마리 있을까 

SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE;

 

20. NULL 처리하기

SELECT ANIMAL_TYPE, IFNULL(NAME, "No name") AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS ORDER BY ANIMAL_ID;

 

21. 경기도에 위치한 식품창고 목록 출력하기

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, "N") AS "FREEZER_YN" FROM FOOD_WAREHOUSE WHERE WAREHOUSE_NAME LIKE '%경기%' ORDER BY WAREHOUSE_ID ASC;

 

22. 12세 이하인 여자 환자 목록 출력하기

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 ASC;

 

23. 최댓값 구하기

SELECT DATETIME "시간" FROM ANIMAL_INS ORDER BY DATETIME DESC LIMIT 1;

 

24. 가격이 제일 비싼 식품의 정보 출력하기

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1;

 

25. 이름이 없는 동물의 아이디 

SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID ASC;

 

26. 흉부외과 또는 일반외과 의사 목록 출력하기

SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD 
FROM DOCTOR 
WHERE MCDP_CD='CS'OR MCDP_CD='GS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC;

 

27. DATETIME에서 DATE로 형 변환

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS "날짜"
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

28. 평균 일일 대여 요금 구하기

SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE='SUV';

ROUND(값, 자릿수)

자릿수가 N: 소숫점 아래 N째 자리까지 반올림하여 표시

자릿수가 -N: 반올림하여 10의 N승 자리까지 표시

자릿수가 0: 반올림하여 1의 자리까지 표시 

 

29. 조건에 맞는 도서 리스트 출력하기

SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') 
FROM BOOK
WHERE YEAR(PUBLISHED_DATE) = "2021" AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE;

30. 과일로 만든 아이스크림 고르기

SELECT A.FLAVOR
FROM FIRST_HALF AS A
LEFT JOIN ICECREAM_INFO AS B
ON A.FLAVOR = B.FLAVOR
WHERE A.TOTAL_ORDER > 3000 AND B.INGREDIENT_TYPE LIKE 'fruit_based'
ORDER BY A.TOTAL_ORDER DESC;

 

31. 중성화 여부 파악하기

SELECT ANIMAL_ID, NAME,
IF(SEX_UPON_INTAKE LIKE '%NEUTERED%' OR SEX_UPON_INTAKE LIKE '%SPAYED%', 'O', 'X') 
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;

 

32. 카테고리 별 상품 개수 구하기

SELECT LEFT(PRODUCT_CODE, 2) AS CATEGORY, COUNT(PRODUCT_ID)
FROM PRODUCT
GROUP BY CATEGORY
ORDER BY CATEGORY ASC;

 

33. 입양 시각 구하기(1)

SELECT HOUR(DATETIME) AS HOUR, COUNT(DATETIME) AS COUNT 
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) >= 9 AND HOUR(DATETIME)<=19
GROUP BY HOUR
ORDER BY HOUR;