gpt4 book ai didi

mysql - 统计不同项目出现的次数

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

该表存储在进行任何考试时未通过某一科目的学生的姓名。由于时间线是全年,因此可能会出现重复记录。科目是静态的,比如 2(数学、科学)。我需要计算学生全年在每个子项中失败的次数。

我的查询:

select a.name,
(select count(*)
from student
where name = a.name
and subject = 'maths'
) as maths,
(select count(*)
from student
where name = a.name
and subject = 'science'
) as science
from student a
group by name

虽然我的查询有效,但当主题数量超过两个时,效率不高。附:我知道表的结构会更好。 ?但这是一项任务。 enter image description here

编辑:问题是,科目数量约为 10。那么最好的查询是什么?我应该将它们存储在数组或类似的单独表中吗?

非常感谢!! :)祝你有愉快的一天:)

最佳答案

用例表达式,这里可以使用SUM()

select a.name
, SUM(case when subject = 'maths' then 1 else 0 end) as maths
, SUM(case when subject = 'science' then 1 else 0 end) as science
from student a
group by a.name

或者利用 COUNT() {它不计算 NULL}

select a.name
, COUNT(case when subject = 'maths' then 1 end) as maths
, COUNT(case when subject = 'science' then 1 end) as science
from student a
group by a.name

或者您可以在使用 COUNT() 时包含“else NULL”

关于mysql - 统计不同项目出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46521148/

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