gpt4 book ai didi

mysql - 在不同条件下对同一列计数 * 两次

转载 作者:行者123 更新时间:2023-11-29 11:13:24 25 4
gpt4 key购买 nike

我试图在同一列的不同条件下对同一列进行两次计数(*)

这是我所拥有的;我尝试了很多东西但无法让它发挥作用。我不想编写两个不同的查询。

SELECT somedate as date, 
count(*) as goodone,
sum(money) as goodcost
FROM goods
where goodstatus=2 group by date;

当 goodstatus = 1 时,那就是 badone,所以我也想包含它,而不是为其编写单独的查询。

最后,我想要的是

somedate | goodone | badones| goodcost

如果我尝试执行

,我会收到子查询返回多行错误的信息
(SELECT count(*) FROM goods where goodstatus=1) as badones 

在上面的查询中。

最佳答案

根据条件对记录进行计数,而不是添加新查询

试试这个方法

SELECT somedate            AS date,
Sum(goodstatus = 2) AS goodone,
Sum(goodstatus = 1) AS badones,
Sum(money) AS goodcost
FROM goods
WHERE goodstatus IN ( 1, 2 )
GROUP BY date;

使用CASE的另一种方法声明

count(case when goodstatus = 2 then 1 end) AS goodone,
count(case when goodstatus = 1 then 1 end) AS badones,

上面CASE声明,1 else NULL 满足条件时会得到结果结果是。 Count合计不算 NULL通过这个值我们可以找到goodstatus = 2出现的次数或goodstatus = 1

关于mysql - 在不同条件下对同一列计数 * 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40160389/

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