gpt4 book ai didi

mysql - 来自多个表的多次计数并按年级分组

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

我有一个以student_uid、grade、test_name为列的表,我想计算每个等级有多少人......为此

SELECT a.grade,COUNT(a.grade) AS count1 
FROM 2015_2016_x_english_grades AS a
where test_name='ut1_marks'
GROUP BY grade

对于单个表,如何为多个表执行此操作

我的查询:

SELECT a.grade, COUNT(a.grade),b.grade,COUNT(b.grade) 
FROM 2015_2016_x_english_grades a
INNER JOIN 2015_2016_x_hindi_grades b ON a.grade=b.grade
WHERE a.test_name = b.ut1_marks='ut1_marks'
GROUP BY a.grade,b.grade

这有什么问题吗?我也试过这个SELECT a.grade,COUNT(a.grade),(SELECT COUNT(b.grade)FROM 2015_2016_x_biology_grades b where b.test_name='ut1_marks' GROUP BY b.grade)as count1 FROM 2015_2016_x_biology_grades a where test_name='ut1_marks' GROUP BY一个品级 它显示 [Err] 1242 - 子查询返回超过 1 行

最佳答案

在子查询中进行计数,并连接子查询。

SELECT e.grade, english_count, hindi_count
FROM (SELECT grade, COUNT(*) AS english_count
FROM 2015_2016_x_english_grades
WHERE test_name = 'ut1_marks'
GROUP BY grade) AS e
JOIN (SELECT grade, COUNT(*) as hindi_count
FROM 2015_2016_x_hindi_grades
WHERE test_name = 'ut1_marks'
GROUP BY grade) AS h
ON e.grade = h.grade

或者,如果每个表中有一个唯一的键,您可以这样做:

SELECT e.grade, COUNT(DISTINCT e.id) AS english_count, COUNT(DISTINCT h.id) AS hindi_count
FROM 2015_2016_x_english_grades AS e
JOIN 2015_2016_x_hindi_grades AS h ON e.grade = h.grade AND e.test_name = h.test_name
WHERE e.test_name = 'ut1_marks'
GROUP BY e.grade

请注意,这两个查询只会显示两个表中都存在的成绩。要获得只存在于一张表中的成绩,需要使用FULL OUTER JOIN,但MySQL没有此操作。参见

Full Outer Join in MySQL

了解如何模拟它们。

关于mysql - 来自多个表的多次计数并按年级分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31744520/

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