# 코드 1
SELECT
customer_number
FROM Orders
GROUP BY customer_number
ORDER BY COUNT(*) DESC
LIMIT 1
# 코드 2
WITH a AS (
SELECT customer_number, COUNT(*) AS cnt
FROM Orders
GROUP BY customer_number
),
b AS (
SELECT *,
RANK() OVER (ORDER BY cnt DESC) AS rnk
FROM a
)
SELECT customer_number
FROM b
WHERE rnk = 1;
비고 : 코드 1처럼 풀면 간단하게 해결이 되지만 확장성이 부족하고 동률일 경우 처리가 불가능하기에 코드 2를 짰다.
SELECT
name
, population
, `area`
FROM World
WHERE population >= 25000000
OR area >= 3000000
SELECT
class
FROM Courses
GROUP BY class
HAVING COUNT(class) >= 5