df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

arg_max / max_by 的 top-N

中等 24-duckdb-sql-only DuckDB SQL 专属 arg-maxmax-bytop-nlist

对每个品类,列出最贵的 3 个商品的名字。

  • top3 是字符串列表,按价格从高到低排列;价格相同时 product_id 小的在前。
  • price 为 null 的商品不参与排名。
  • 品类里有价格的商品不足 3 个时,列表就只有那么多个元素。每个品类至少有一个有价格的商品。

考点:用“取最大值对应的 x”这类聚合函数的 top-N 形式,一次得到列表,不写窗口函数。判题只看结果。

输入

  • products(product_id, name, category, price, cost, launched_on)

输出

列为 category, top3,每个品类一行,行顺序不限;top3 内部的顺序要符合上面的要求。

输入表 (case base,共 2 个 case:base、edge)

products shop/products
#product_idint64namestringcategorystringpricefloat64costfloat64launched_ondate
1 1 Wireless Mouse Electronics 25.0 16.77 2025-05-07
2 2 USB-C Hub Electronics 49.9 34.17 2025-07-27
3 3 Bluetooth Speaker Electronics 89.0 61.47 2025-02-10
4 4 Mechanical Keyboard Electronics 199.0 105.48 2024-09-19
5 5 4K Monitor Electronics 500.0 282.38 2024-07-10
6 6 Noise-cancel Headphones Electronics 299.0 211.57 2025-01-14
7 7 Python Cookbook Books 59.0 30.08 2025-09-15
8 8 SQL Pocket Guide Books 39.9 22.14 2025-01-20
9 9 数据分析实战 Books 79.0 40.83 2024-12-15
10 10 Clean Code Books 50.0 28.48 2025-03-13
11 11 统计学习方法 Books 99.0 70.22 2025-03-13
12 12 Desk Lamp Home 45.0 24.99 2025-11-04
13 13 Ceramic Mug Home 19.9 11.34 2025-12-02
14 14 Throw Pillow Home 35.0 19.23 2024-06-29
15 15 Wall Clock Home 99.0 47.98 2025-02-23
16 16 Storage Box Home 29.9 15.06 2025-02-27
17 17 Puzzle 1000pc Toys 129.0 59.53 2025-08-19
18 18 Building Blocks Toys 199.0 110.19 2025-04-18
19 19 RC Car Toys 359.0 208.55 2025-11-06
20 20 Plush Panda Toys 89.0 43.14 2026-01-12
显示前 20 行,共 30 行

期望输出 (case base,行顺序不限)

#categoryStringtop3List(String)
1 Electronics ["4K Monitor", "Noise-cancel Headphones", "Mechanical Keyboard"]
2 Books ["统计学习方法", "数据分析实战", "Python Cookbook"]
3 Home ["Wall Clock", "Desk Lamp", "Throw Pillow"]
4 Toys ["RC Car", "Building Blocks", "Puzzle 1000pc"]
5 Sports ["Running Shoes", "Dumbbell Set", "Yoga Mat"]
6 Beauty ["Face Cream", "Sunscreen", "Shampoo"]
共 6 行