在子查询中排名
Rank in subquery
我希望使用下面的 table 按总销售价格报告畅销书:
销售额 table:
seller_id |数量 |价格
| 1 | 2 | 2000 |
| 1 | 1 | 800 |
| 2 | 1 | 800 |
| 3 2 | 2800 |
结果需要是 1 和 3(a table 有 1 列“seller_id”),因为 ID 为 1 和 3 的卖家销售的产品总价最高为 2800
我尝试使用 rank.. 在子查询中编写一个查询,我会得到类似的东西:
SELECT
sum(price), rank() over (order by price desc )
从
销售量
按 seller_id
分组
然后,我需要 select rank=1 的总和(价格),但我不知道怎么写..
然后,在子查询之外,我只想 select seller_id。
我们如何做到这些?
使用 RANKING 函数根据最高价格检索 seller_id。 RANK() 函数使用 GAP 序列化位置。如果两个值在同一位置,则此值之后的第三个值位置将是 3 而不是 2。
-- MySQL (v5.8)
SELECT t.seller_id, t.total_price
FROM (SELECT seller_id, SUM(price) total_price
, RANK() OVER (ORDER BY SUM(price) DESC) rank_price
FROM sales
GROUP BY seller_id) t
WHERE t.rank_price = 1
DENSE_RANK() 函数在没有 GAP 的情况下序列化位置。如果以后需要top 5价格就更好了
-- MySQL (v5.8)
SELECT t.seller_id, t.total_price
FROM (SELECT seller_id, SUM(price) total_price
, DENSE_RANK() OVER (ORDER BY SUM(price) DESC) rank_price
FROM sales
GROUP BY seller_id) t
WHERE t.rank_price = 1
请检查 url https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=90c756fa6d3ab25914721cfe40df5e9a
我希望使用下面的 table 按总销售价格报告畅销书: 销售额 table:
seller_id |数量 |价格
| 1 | 2 | 2000 |
| 1 | 1 | 800 |
| 2 | 1 | 800 |
| 3 2 | 2800 |
结果需要是 1 和 3(a table 有 1 列“seller_id”),因为 ID 为 1 和 3 的卖家销售的产品总价最高为 2800
我尝试使用 rank.. 在子查询中编写一个查询,我会得到类似的东西:
SELECT sum(price), rank() over (order by price desc ) 从 销售量 按 seller_id
分组然后,我需要 select rank=1 的总和(价格),但我不知道怎么写.. 然后,在子查询之外,我只想 select seller_id。 我们如何做到这些?
使用 RANKING 函数根据最高价格检索 seller_id。 RANK() 函数使用 GAP 序列化位置。如果两个值在同一位置,则此值之后的第三个值位置将是 3 而不是 2。
-- MySQL (v5.8)
SELECT t.seller_id, t.total_price
FROM (SELECT seller_id, SUM(price) total_price
, RANK() OVER (ORDER BY SUM(price) DESC) rank_price
FROM sales
GROUP BY seller_id) t
WHERE t.rank_price = 1
DENSE_RANK() 函数在没有 GAP 的情况下序列化位置。如果以后需要top 5价格就更好了
-- MySQL (v5.8)
SELECT t.seller_id, t.total_price
FROM (SELECT seller_id, SUM(price) total_price
, DENSE_RANK() OVER (ORDER BY SUM(price) DESC) rank_price
FROM sales
GROUP BY seller_id) t
WHERE t.rank_price = 1
请检查 url https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=90c756fa6d3ab25914721cfe40df5e9a