我有一张这样的table(示例):
Name_Seller Month Value
---------------------------
Seller A Jan 200
Seller B Jan 100
Seller A Fev 300
Seller B Fev 100
Seller C Jan 400
Seller A Mar 200
Seller D Jan 300
sql查询:
SELECT Name_Seller, Month, Value
FROM SALES
WHERE Value = (SELECT MAX(Value) FROM SALES GROUP BY Name_Seller);
我想为每一个卖家打印出他最大的销售额和销售时间。
你能帮我修正我的问题并解释为什么它不起作用吗?
我试过:
select name_seller, month, max(value)
from sales
group by name_seller, month;
但是这个查询返回:
+---------------+------------+------+
| NAME_SELLER | MAX(VALUE) | MONTH|
+---------------+------------+------+
| SELLER A | 4182.00 | Jan |
| SELLER A | 3261.00 | Fev |
| SELLER A | 4219.00 | Mar |
| SELLER B | 2123.00 | Jan |
| SELLER B | 2111.00 | Fev |
| SELLER B | 3918.00 | Mar |
| SELLER C | 3000.00 | Jan |
| SELLER C | 4000.00 | Fev |
| SELLER C | 1500.00 | Mar |
| SELLER D | 2819.00 | Jan |
| SELLER D | 3881.00 | Fev |
| SELLER D | 2012.00 | Mar |
+---------------+------------+------+
我想要每个销售员的最高销售额和销售时间。
因此,它应该只返回一个销售人员为每个销售。
4条答案
按热度按时间ruarlubt1#
与
ROW_NUMBER()
窗口功能:改变
ROW_NUMBER()
与RANK()
如果你想要回领带。或者在
WHERE
条款:或者如果您的数据库支持:
whhtz7ly2#
您的查询也可以带来结果,但是where子句中的“=”运算符需要更改为“in”,因为下面的查询带来了不止一行,所以它需要where子句中的in运算符。此外,查询中的数据返回了正确的结果,但请注意一般情况下使用,因为与@forpas给出的示例中的销售金额(值)进行比较也会产生错误的结果。
更改运算符后,您的查询将工作。
也可以使用rank()窗口函数
m1m5dgzv3#
它看起来是这样的:
zaq34kh64#
您可以使用下面的查询,
如果你也期待一个月,那么使用,