Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions unit10/question1_seohee.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*
[질문]
각 사용자(name)가 이동한 거리(traveled_distance)를 조회하는 SQL 쿼리를 작성합니다.
traveled_distance를 기준으로 내림차순으로 정렬하고, 두 명 이상의 사용자가 동일한 거리를 이동한 경우 name을 기준으로 오름차순으로 정렬합니다.
*/

SELECT
u.name,
IFNULL(SUM(r.distance),0) AS traveled_distance
FROM users AS u
LEFT OUTER JOIN rides AS r
ON u.id = r.user_id
GROUP BY u.id, u.name
ORDER BY traveled_distance DESC, name;

-- IFNULL 문법 IFNULL(표현, 대체값)
-- GROUP BY에 u.id만 썼었는데 ORDER BY에서 name으로 정렬하기 때문에 u.name도 적어야 한다고 함.
15 changes: 15 additions & 0 deletions unit10/question2_seohee.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
[질문]
각 사용자(buyer_id)의 가입 날짜(join_date)와 함께 2025년에 구매한 주문 수(orders_in_2025)를 조회하는 SQL 쿼리를 작성합니다.
*/

SELECT
u.user_id AS buyer_id,
u.join_date,
COUNT(CASE WHEN DATE_FORMAT(o.order_date, '%Y') = 2025 THEN 1 END) AS orders_in_2025
FROM users AS u
LEFT OUTER JOIN orders AS o
ON u.user_id = o.buyer_id
GROUP BY u.user_id, u.join_date;

-- IFNULL을 안 사용하고 풀었다. COUNT()는 NULL은 카운트 안하고 값이 없으면 0을 반환함.
11 changes: 11 additions & 0 deletions unit11/question1_seohee.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*
가장 수익이 높은 회사(company_name) 3개와 그 수익(profit)을 조회하는 SQL 쿼리를 작성합니다.
profit을 기준으로 내림차순으로 정렬합니다.
*/

SELECT
company_name,
profit
FROM forbes_global
ORDER BY profit DESC
LIMIT 3;
11 changes: 11 additions & 0 deletions unit11/question2_seohee.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*
가장 많은 선수가 출전한 올림픽(game)과 선수 수(athletes_count)를 조회하는 SQL 쿼리를 작성합니다.
*/

SELECT
game,
COUNT(*) AS athletes_count
FROM olympics_athletes
GROUP BY game
ORDER BY athletes_count DESC
LIMIT 1;
18 changes: 18 additions & 0 deletions unit11/question3_seohee.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/*
우승자 이름(name)을 조회하는 SQL 쿼리를 작성합니다. 동률이 없다고 가정합니다.
즉 우승자는 최대 한 명입니다.
*/

SELECT
c.name
FROM candidate AS c
INNER JOIN (
SELECT
candidate_id,
COUNT(*) AS vote_count
FROM vote
GROUP BY candidate_id
) AS v
ON c.candidate_id = v.candidate_id
ORDER BY vote_count DESC
LIMIT 1;