본문 바로가기

CS(Computer Science)/데이터 베이스

프로그래머스 SQL 문제 (MySQL) - 1

 

<SELECT>

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59034

->

SELECT * 

FROM animal_ins 

ORDER BY animal_id

 

 

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59035

 

->

SELECT name, datetime 

FROM animal_ins 

ORDER BY animal_id DESC

 

 

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59036

 

->

SELECT animal_id, name 

FROM animal_ins 

WHERE intake_condition = "Sick" 

ORDER BY animal_id

 

 

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59037

 

->

SELECT animal_id, name 

FROM animal_ins 

WHERE intake_condition != "aged" 

ORDER BY animal_id

 

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59403

 

->

SELECT animal_id, name 

FROM animal_ins 

ORDER BY animal_id

 

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59404

 

->

SELECT animal_id, name, datetime 

FROM animal_ins 

ORDER BY name, datetime DESC

(name 오름 차순으로 정렬, 같은 이름은 datetime내림차순으로 정렬)

 

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59405

 

->

SELECT name 

FROM animal_ins 

ORDER BY datetime

LIMIT 1

 

 (LIMIT 3 : 맨 위에서부터 3개까지의 정보 조회)

 (LIMIT 2, 6 : 위에서 2번째부터 6번째까지의 정보 조회)

 

 

 


 

<SUM, MAX, MIN>

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59415

 

-> 

SELECT MAX(datetime) as "시간"

FROM animal_ins  (as "시간" 굳이 안해도 됨)

 

->

SELECT datetime

FROM animal_ins

ORDER BY datetime DESC

LIMIT 1

 

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59038

 

->

SELECT MIN(datetime) as "시간" 

FROM animal_ins 

 

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59406

 

->

SELECT COUNT(*) AS COUNT 

FROM animal_ins

 

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59408

 

->

SELECT COUNT(DISTINCT(name)) 

FROM animal_ins 

WHERE name is not NULL

 

 


<GROUP BY>

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59040

 

->

SELECT ANIMAL_TYPE, COUNT(*) AS 'count'

FROM animal_ins

WHERE animal_type = 'Cat' OR animal_type = 'Dog'

GROUP BY animal_type  

ORDER BY animal_type

 

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59041

 

->

SELECT NAME, COUNT(*) AS COUNT 
FROM ANIMAL_INS 
GROUP BY NAME
HAVING COUNT(NAME)>=2
ORDER BY NAME

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59412

 

->

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

 

->

SELECT HOUR(datetime) as HOUR, COUNT(*) 
FROM ANIMAL_OUTS
GROUP BY HOUR(datetime)
HAVING HOUR>=9 and HOUR<=19
ORDER BY HOUR(datetime)

 

 

 

문제 링크 : programmers.co.kr/learn/courses/30/lessons/59413

 

 

->

SELECT HOUR, COUNT(b.datetime) AS COUNT
FROM (SELECT 0 AS HOUR UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 

UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 

UNION SELECT 12 UNION SELECT 13 UNION SELECT 14 UNION SELECT 15 UNION SELECT 16 UNION SELECT 17 

UNION SELECT 18 UNION SELECT 19 UNION SELECT 20 UNION SELECT 21 UNION SELECT 22 UNION SELECT 23) A LEFT JOIN ANIMAL_OUTS AS B ON A.HOUR = HOUR(B.datetime) 
GROUP BY HOUR
ORDER BY HOUR

 

(UNION : 중복 제거하며 합집합,   UNION ALL 중복 포함하며 합집합)

(새로운 테이블 만들어서 존재하지 않는 시간의 튜플(인스턴스)도 만들어주기)

(left join  =  left outer join)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형