gpt4 book ai didi

sql - SQL:聚合后如何过滤?

转载 作者:行者123 更新时间:2023-12-04 00:42:28 24 4
gpt4 key购买 nike

删除不需要汇总的值非常容易。

例如:

SELECT department, SUM(sales) as "Total sales"
FROM order_details
GROUP BY department
HAVING SUM(sales) > 1000;


这将从总和中排除所有值小于或等于1000的销售。

但是汇总后如何过滤?

例如。 WHERE ("Total sales"> 15000)

编辑:具有讽刺意味的是,我只包括 HAVING SUM(sales) > 1000;是为了避免引起对所需查询类型的困惑;因为我实际上不希望从求和中排除项目,所以只关心返回的结果!谢谢,尽管感到困惑!

最佳答案

您所拥有的查询实际上是在做您想要的而不是您在问题中表达的内容。如果要排除所有小于1000的销售额,则应使用WHERE sales > 1000。但是使用HAVING SUM(sales) > 1000过滤实际上是在聚合之后完成的。

编写子查询并在原始查询的顶部添加另一个SELECT WHERE是多余的。

请参阅fiddle进行澄清。

#Query1

SELECT department, SUM(sales) as Total
FROM order_details
GROUP BY department
HAVING Total > 40;

#Query 2

SELECT department, SUM(sales) as Total
FROM order_details
GROUP BY department
HAVING SUM(sales) > 40;

#Query 3

SELECT department, SUM(sales) as Total
FROM order_details
WHERE sales > 40
GROUP BY department;

#Query 1 and 2 are the same, filtering after aggregation
#Query 3 is filtering before aggregation

关于sql - SQL:聚合后如何过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15767794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com