我有一个question表,里面一条记录是一道题,现在我要在界面上显示每套题的信息,需要获取每套题的题目数量和已审核的数量。(statu = 1为已审核,0为未审核)
表结构如下
questionID paperName statu
1 xx学校期中考试 1
2 xx学校期中考试 1
3 xx学校期中考试 0
4 xx学校期末考试 0
4 xx学校期末考试 1
查询出的结果是
试卷名 题目数量 审核数量
xx学校期中考试 3 2
xx学校期末考试 2 1
我写的sql
select COUNT(1) as 总题数,paperName from question where
papername in(select distinct paperName from question)
group by paperNme
select COUNT(1) as 审核题数,paperName from question where
papername in(select distinct paperName from question) and statu=1
group by paperNme
我的的sql语句只能查出一个题目数量或者审核数量
如何让两个一起查询出来?
可以有两种解决方法,
所需工具:SQL
查询两个count的方法1:
SELECT paperName查询两个count的方法2:
select s.总题数, s.审核题数, s.paperName备注:两个都可以使用。
除了count之外还有一个函数叫做 SUM。
SELECT paperNamepapername in(select distinct paperName from question) 这个没意义吧? 都是同一张question表,要不就是你表名写错了。
Good Luck !
追问恩恩,写的这个可以查出来,之前还没怎么用过sum,现在知道了
papername in(select distinct paperName from question) 这个写得有点多余了,我在我数据库中是可以查出来的,
感谢感谢 采纳你的了
可以有两种解决方法。
方法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
本回答被网友采纳用case when根据条件计数:
select s.总题数, s.审核题数, s.paperName你写的也蛮不错,但是别人先回答的问题已近解决了
sorry!
不错,我也学习了。