1~10번 문제
#1.모든 아티스트의 이름을 조회하세요
SELECT *
FROM SQL_Artists
#2.K-POP 장르의 Genre_ID를 조회하세요
SELECT *
FROM SQL_Genres
WHERE Name='K-Pop'
#3.앨범 발매 연도가 2020년 이후인 앨범의 제목과 연도를 조회하세요.
SELECT Title, Year
FROM SQL_Albums
WHERE YEAR >= 2020
#4.트랙 길이가 240초 이상인 트랙의 제목과 길이를 조회하세요.
SELECT Title, Length
FROM SQL_Tracks
WHERE Length >= 240
#5.중복을 제거한 장르명을 모두 조회하세요.
SELECT DISTINCT Name
FROM SQL_Genres g
#6.각 장르별로 몇 개의 트랙이 있는지 조회하세요.
SELECT sg.Genre_ID, sg.name, COUNT(*)
FROM SQL_Genres sg
JOIN SQL_Tracks st
ON sg.Genre_ID = st.Genre_ID
GROUP BY sg.Name
#7.각 아티스트가 보유한 앨범 개수를 조회하세요.
SELECT sa.Artist_ID, sa.Name, COUNT(Album_ID)
FROM SQL_Artists sa
JOIN SQL_Albums sa2
ON sa.Artist_ID = sa2.Artist_ID
GROUP BY Name
#8.2020년 이전에 발매된 앨범의 수를 조회하세요
SELECT COUNT(*)
FROM SQL_Albums sa
WHERE YEAR <= 2020
#9.트랙 제목에 '1'이 포함된 트랙을 모두 조회하세요.
SELECT Title
FROM SQL_Tracks st
WHERE Title LIKE '%1%'
#10.리뷰 평점이 5점인 앨범 리뷰를 모두 조회하세요.
SELECT sa.Title,Comment, Ranking
FROM SQL_Album_Reviews sar
JOIN SQL_Albums sa
ON sar.Album_ID = sa.Album_ID
WHERE Ranking='5'
JavaScript
복사
11~20번 문제
#11.각 리뷰어가 작성한 리뷰 수를 조회하세요.
SELECT sar.Reviewer_ID, COUNT(Review_Date)
FROM SQL_Album_Reviews sar
GROUP BY Reviewer_ID
#12.각 앨범의 평균 평점을 조회하세요.
SELECT sa.Title,
ROUND(AVG(sar.Ranking),1)
FROM SQL_Albums sa
JOIN SQL_Album_Reviews sar
ON sa.Album_ID = sar.Album_ID
GROUP BY 1
#13.각 트랙의 제목과 해당 장르명을 함께 조회하세요.
SELECT title, sg.Name
FROM SQL_Tracks st
JOIN SQL_Genres sg
ON st.Genre_ID = sg.Genre_ID
#14.각 앨범에 몇 개의 트랙이 있는지 조회하세요.
SELECT sa.Album_ID,
sa.Title,
COUNT(st.Track_Num) AS cnt_track_num
FROM SQL_Tracks st
JOIN SQL_Albums sa
ON st.Album_ID = sa.Album_ID
GROUP BY 1
#15.트랙 수가 5개 이상인 앨범을 조회하세요.
SELECT sa.Album_ID, sa.Title,
COUNT(st.Track_Num) AS cnt_track_num
FROM SQL_Tracks st
JOIN SQL_Albums sa
ON st.Album_ID = sa.Album_ID
GROUP BY 1,2
HAVING cnt_track_num >= 5
#16.NULL이 아닌 리뷰 코멘트만 조회하세요.
#NULL이 없는데,..?
SELECT Comment
FROM SQL_Album_Reviews
WHERE Comment IS NOT NULL
#17.앨범 리뷰에서 평점이 NULL이면 0으로 대체하여 조회하세요.
SELECT sar.Reviewer_ID,
sar.Album_ID,
sa.Title,
COALESCE(Ranking, 0) AS Ranking,
sar.Comment
FROM SQL_Album_Reviews sar
LEFT JOIN SQL_Albums sa
ON sar.Album_ID = sa.Album_ID
#18.앨범 리뷰의 작성일이 올해인 경우만 조회하세요.
SELECT Comment, Review_Date
FROM SQL_Album_Reviews
WHERE Review_Date LIKE '%2025%'
#19.리뷰 작성일이 없는 데이터(리뷰 날짜가 NULL)를 조회하세요. <???> <다시 풀어보기>
SELECT sar.Reviewer_ID,
sr.Reviewer_ID,
sar.Album_ID,
sa.Title
FROM SQL_Album_Reviews sar
LEFT JOIN SQL_Albums sa
ON sar.Album_ID = sa.Album_ID
LEFT JOIN SQL_Reviewers sr
ON sar.Reviewer_ID = sr.Reviewer_ID
WHERE sar.Review_Date IS NULL
SELECT sar.Reviewer_ID,
sr.Reviewer_ID,
sar.Album_ID,
sa.Title
FROM SQL_Albums sa
LEFT JOIN SQL_Album_Reviews sar
ON sar.Album_ID = sa.Album_ID
LEFT JOIN SQL_Reviewers sr
ON sar.Reviewer_ID = sr.Reviewer_ID
WHERE sar.Review_Date IS NULL
#20.리뷰가 없는 앨범을 조회하세요.
SELECT sa.Album_ID, Title, Comment
FROM SQL_Albums sa
LEFT JOIN SQL_Album_Reviews sar
ON sa.Album_ID = sar.Album_ID
WHERE Comment IS NULL
JavaScript
복사
21~30번 문제
#21.리뷰가 가장 많은 앨범을 조회하세요.
SELECT sa.title,
COUNT(*) AS cnt_review
FROM SQL_Albums sa
JOIN SQL_Album_Reviews sar
ON sa.Album_ID = sar.Album_ID
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1
#22.가장 많은 앨범을 가진 아티스트를 조회하세요.
SELECT sa2.Artist_ID, sa2.Name,
COUNT(sa.Album_ID) AS cnt_album
FROM SQL_Albums sa
JOIN SQL_Artists sa2
ON sa.Artist_ID = sa2.Artist_ID
GROUP BY 1
ORDER BY cnt_album desc
LIMIT 1
#23.트랙 평균 길이가 가장 긴 장르를 조회하세요.
SELECT sg.Name,
ROUND(AVG(Length)) AS avg_length
FROM SQL_Genres sg
JOIN SQL_Tracks st
ON sg.Genre_ID = st.Genre_ID
GROUP BY 1
ORDER BY avg_length DESC
LIMIT 1
#24.앨범 평균 평점이 4.5 이상인 앨범을 조회하세요.
SELECT sa.title, AVG(Ranking) as avg_ranking
FROM SQL_Album_Reviews sar
JOIN SQL_Albums sa
ON sar.Album_ID = sa.Album_ID
GROUP BY 1
HAVING avg_ranking >= '4.5'
#25.각 아티스트의 앨범 평균 발매연도를 조회하세요.
SELECT sa2.Name,
ROUND(AVG(sa.year)) AS '평균 발매연도'
FROM SQL_Albums sa
JOIN SQL_Artists sa2
ON sa.Artist_ID = sa2.Artist_ID
GROUP BY 1
#26.각 장르별 트랙 총 길이를 조회하세요.
SELECT sg.Name,
SUM(st.Length) AS total_length
FROM SQL_Genres sg
JOIN SQL_Tracks st
ON sg.Genre_ID = st.Genre_ID
GROUP BY 1
#27.각 앨범의 평균 트랙 길이를 조회하세요.
SELECT sa.Title,
ROUND(AVG(st.Length))
FROM SQL_Albums sa
JOIN SQL_Tracks st
ON sa.Album_ID = st.Album_ID
GROUP BY 1
#28.리뷰 작성자가 등록한 앨범별 평점 합계를 조회하세요.
SELECT sar.Reviewer_ID,sa.Title,
SUM(COALESCE(sar.Ranking, 0)) AS total_ranking
FROM SQL_Album_Reviews sar
JOIN SQL_Albums sa
ON sar.Album_ID = sa.Album_ID
GROUP BY 1,2
#29.2020년~2025년 사이 작성된 리뷰 코멘트 수가 2개 이상인 앨범을 조회하세요.
SELECT sa.title,
sar.Comment,
COUNT(*) AS cnt
FROM SQL_Albums sa
JOIN SQL_Album_Reviews sar
ON sa.Album_ID = sar.Album_ID
WHERE LEFT(sar.Review_Date, 4) BETWEEN '2020' AND '2025'
GROUP BY 1
HAVING cnt >= 2
#30.각 아티스트의 앨범 수와 총 트랙 수를 함께 조회하세요.
SELECT sa.Name,
COUNT(DISTINCT sa2.Title) AS '앨범 수',
COUNT(st.Track_Num) AS '트랙 수'
FROM SQL_Artists sa
JOIN SQL_Albums sa2
ON sa.Artist_ID = sa2.Artist_ID
JOIN SQL_Tracks st
ON sa2.Album_ID = st.Album_ID
GROUP BY 1
JavaScript
복사