gpt4 book ai didi

mysql - 合并来自同一来源的两个计数查询

转载 作者:搜寻专家 更新时间:2023-10-30 20:56:43 25 4
gpt4 key购买 nike

我有两个查询返回带有计数的服务项目列表。一种是针对整个数据库,另一种是针对特定时期。它们单独工作得很好,但我想将它们优化为单个查询。

这两个查询是:

SELECT service_type, count(service_type) from qba_customers group by service_type order by count(service_type) desc

SELECT service_type, count(service_type) from qba_customers WHERE created_on BETWEEN '2013-01-01' AND '2013-06-30' group by service_type order by count(service_type) desc

我尝试了一些失败的事情,下面是我认为最初可行的方法:

SELECT service_type, COUNT(service_type) AS full_count, (count(service_type) WHERE created_on BETWEEN '2013-01-01' AND '2013-06-30') AS period_count FROM qba_customers GROUP BY service_type ORDER BY service_type DESC

提前致谢!

最佳答案

所有聚合函数,包括 COUNT,将只包含一个不为 NULL 的值。要仅计算日期范围内的行数,请使用 CASE 构造作为计数参数。如果 CASE 返回一个值,它就会被计算在内。如果没有返回值,则不算:

SELECT
service_type,
COUNT(service_type) AS GrandTotal,
COUNT(CASE WHEN created_on BETWEEN '2013-01-01' AND '2013-06-30' THEN 1 END) AS FirstHalf2013
FROM qba_customers
GROUP BY service_type
ORDER BY GrandTotal

对于 FirstHalf2013 列,如果 created_on 在目标范围内,CASE 返回一个非空值(我在这里使用 1,但它可以是任何非空值)。如果 created_on 不在目标范围内,则 CASE 返回 NULL,这意味着不计算该行。

关于mysql - 合并来自同一来源的两个计数查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18094490/

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