Chọn hàng đầu tiên trong mỗi nhóm GROUP BY (bài toán tìm n lớn nhất trong mỗi group)?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
331 lượt xem
Sql Server master

Ta có bảng Purchases:

id | customer | total
---+----------+------
1  | Joe      | 5
2  | Sally    | 3
3  | Joe      | 2
4  | Sally    | 1

Viết truy vấn tìm id của lần mua hàng lớn nhất (total) của một khách hàng.

Trả lời:

WITH summary AS (
   SELECT p.id,
      p.customer,
      p.total,
      ROW_NUMBER() OVER(PARTITION BY p.customer
           ORDER BY p.total DESC) AS rk
   FROM PURCHASES p)
SELECT s.*
   FROM summary s
   WHERE s.rk = 1
{{login.error}}