sql一个表中同时查询两个count的sql语句

2024-10-30 08:58:07
推荐回答(4个)
回答1:

可以有两种解决方法,

所需工具:SQL

查询两个count的方法1:

SELECT paperName
    , COUNT (1) AS 总题数
    , sum (CASE WHEN statu = 1 THEN 1 ELSE 0 END) AS 审核题数
FROM question
GROUP BY paperNme

查询两个count的方法2:

select s.总题数, s.审核题数, s.paperName
from (
select COUNT(1) as 总题数, case when status = 1 then count(1) else 0 end as 审核题数,  paperName
from question
--where papername in (select distinct paperName from question), 这个条件可以不要了
group by paperNme, stauts -- status也要作为分组字段,因为在case中有使用
) s

备注:两个都可以使用。

回答2:

除了count之外还有一个函数叫做 SUM。

SELECT paperName
    , COUNT (1) AS 总题数
    , sum (CASE WHEN statu = 1 THEN 1 ELSE 0 END) AS 审核题数
FROM question
GROUP BY paperNme

papername in(select distinct paperName from question)   这个没意义吧? 都是同一张question表,要不就是你表名写错了。


Good Luck !

回答3:

可以有两种解决方法。

方法1:

SELECT paperName

, COUNT (1) AS 总题数

, sum (CASE WHEN statu = 1 THEN 1 ELSE 0 END) AS 审核题数

FROM question

GROUP BY paperNme 

方法2:

select s.总题数, s.审核题数, s.paperName

from (

select COUNT(1) as 总题数, case when status = 1 then count(1) else 0 end as 审核题数,  paperName

from question

--where papername in (select distinct paperName from question), 这个条件可以不要了

group by paperNme, stauts -- status也要作为分组字段,因为在case中有使用

) s

回答4:

用case when根据条件计数:

select s.总题数, s.审核题数, s.paperName
from (
select COUNT(1) as 总题数, case when status = 1 then count(1) else 0 end as 审核题数,  paperName
from question
--where papername in (select distinct paperName from question), 这个条件可以不要了
group by paperNme, stauts -- status也要作为分组字段,因为在case中有使用
) s