我有一个名为“Sales”的巨大表格,其中包含这些区域
Time | Product | amount | customerid
Date1 | Product1 | 2 | 2
Date1 | Product2 | 5 | 3
Date1 | Product1 | 6 | 3
Date1 | Product4 | 1 | 3
Date2 | Product1 | 2 | 1
Date2 | Product1 | 2 | 4
Date2 | Product3 | 3 | 4
Date2 | Product3 | 3 | 1
现在,我想每天获得一款最受欢迎的产品。
SELECT Time,
Product,
SUM(amount) AS Total
FROM Sales
GROUP BY Time, Product
给我以下信息
Time | Product | total
Date1 | Product1 | 8
Date1 | Product2 | 5
Date1 | Product4 | 1
Date2 | Product1 | 4
Date2 | Product4 | 6
我必须以何种方式更改我的查询,以仅获取每天最畅销的产品?
编辑:非常感谢您提供的解决方案,但它不起作用。
我想总结一下,每天哪个产品最畅销
Time | Product | total<br/>
Date1 | Product1 | 8<br/>
Date2 | Product4 | 6
像“LIMIT 1”这样的东西只显示第一行,但不是全部!
最佳答案
试试这个查询。 Rank函数的实现在不同的数据库中是不同的。
SELECT TIME, PRODUCT
FROM (
SELECT TIME, PRODUCT, RANK() OVER(ORDER BY SUM_AMOUNT) AS SELECT_TOP
FROM
(
(
SELECT
TIME
, PRODUCT
, SUM(AMOUNT) AS SUM_AMOUNT
FROM Sales
GROUP BY TIME, PRODUCT ) TBL1 ) TBL2
WHERE
SELECT_TOP = 1
关于SQL:如何获取表的每个最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20091575/