SELECT
서울에 위치한 식당 목록 출력하기(Lv4)
문제 설명
문제
REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.
풀이
SELECT로 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회
JOIN에서 공통 컬럼인 REST_ID로 연결
WHERE문에서 '서울'이 들어간 지역으로 제한
* 서울특별시로 해서 틀렸는데, 서울특별시라고 표기하지 않은 식당들이 존재해서 '서울'로 하는 것이 정확!
GROUP BY에서 모든 선택된 컬럼 그룹화
* GROUP BY 절을 사용할 때, SELECT 절에 포함된 모든 컬럼들은 반드시 GROUP BY 절에도 포함되어야함
ORDER BY에서 평균점수와 즐겨찾기를 내림차순 정렬
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
JOIN REST_REVIEW R ON R.REST_ID = I.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;
GROUP BY
입양 시각 구하기(2) (Lv4)
문제 설명
문제
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
풀이
WITH에서 재귀적 cte를 이용하여 시간들을 표현하는 cte 생성(0~23)
SELECT에서 시간, 동물의 수를 조회
JOIN으로 cte에 있는 시간을 연결
GROUP BY에서 시간으로 그룹화
ORDER BY에서 시간을 오름차순 정렬
WITH RECURSIVE Hours AS (
SELECT 0 AS HOUR
UNION ALL
SELECT HOUR + 1
FROM Hours
WHERE HOUR < 23
)
SELECT
H.HOUR,
COUNT(A.ANIMAL_ID) AS COUNT
FROM Hours H
LEFT JOIN ANIMAL_OUTS A ON H.HOUR = HOUR(A.DATETIME)
GROUP BY H.HOUR
ORDER BY H.HOUR;
JOIN
FrontEnd 개발자 찾기(Lv4)
문제 설명
문제
풀이
SELECT에서 개발자의 ID, 이메일, 이름, 성을 조회
WHERE에서 비트 연산자를 사용하여 Front End가 포함된 코드를 가진 개발자로 제한
*비트 연산자란?
비트 연산자는 프로그래밍에서 정수의 이진 표현(bit representation)을 직접 조작할 수 있도록 해주는 연산자입니다. SQL에서도 비트 연산자를 사용할 수 있으며, 주로 특정 비트가 설정되어 있는지를 확인하거나, 비트 플래그를 조작할 때 유용하게 사용됩니다.
ORDER BY에서 ID를 기준으로 오름차순 정렬
select ID, EMAIL, FIRST_NAME, LAST_NAME
from DEVELOPERS
where SKILL_CODE & (select sum(CODE)
from SKILLCODES
where CATEGORY = 'Front End')
order by ID
String, Date
루시와 엘라 찾기(Lv2)
문제 설명
문제
동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
풀이
SELECT에서 동물의 아이디와 이름, 성별 및 중성화 여부를 조회
WHERE에서 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty로 설정
ORDER BY에서 아이디 오름차순 정렬
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
ORDER BY ANIMAL_ID;
'SQL > 프로그래머스' 카테고리의 다른 글
프로그래머스 | SQL 스터디 13 (0) | 2024.09.15 |
---|---|
프로그래머스 | SQL 스터디 12 (0) | 2024.09.15 |
프로그래머스 | SQL 스터디 10 (2) | 2024.09.10 |
프로그래머스 | JOIN - 없어진 기록 찾기 (+JOIN정리) (0) | 2024.09.10 |
프로그래머스 | SQL 스터디 9 (1) | 2024.09.03 |