Mysql 如何按值获取分组列计数
您好,我的表中有一列jtypeid(14是活动,12是考试)和studentid 我想把活动数和考试数作为列。我的问题是Mysql 如何按值获取分组列计数,mysql,sql,group-by,sum,pivot,Mysql,Sql,Group By,Sum,Pivot,您好,我的表中有一列jtypeid(14是活动,12是考试)和studentid 我想把活动数和考试数作为列。我的问题是 SELECT name,surname, count(jtypeid) as activity FROM lms_journal INNER JOIN lms_student ON lms_student.id = lms_journal.studentid WHERE lms_journal.jtypeid=14 GROUP BY studen
SELECT name,surname, count(jtypeid) as activity
FROM lms_journal INNER JOIN
lms_student
ON lms_student.id = lms_journal.studentid
WHERE lms_journal.jtypeid=14
GROUP BY studentid
UNION
SELECT name,surname, count(jtypeid) as exam
FROM lms_journal INNER JOIN
lms_student
ON lms_student.id = lms_journal.studentid
WHERE lms_journal.jtypeid=12
GROUP BY studentid
比如说
id jtypeid studentid
1 14 100
2 14 101
3 12 100
4 12 101
5 14 102
6 14 100
结果应该是:
studentid exam activity
100 1 2
101 1 1
102 0 1
您可以尝试使用条件聚合
select studentid,
count(case when jtypeid=12 then 1 end) as exam,
count(case when jtypeid=14 then 1 end) as activity
from tablename
group by studentid
您可以使用条件聚合:
select
studentid,
sum(jtypeid = 12) exam,
sum(jtypeid = 14) activity
from lms_journal
group by studentid
表达式sum(jtypeid=)
利用了这样一个事实:在MySQL中,真实条件在数值上下文中被计算为1
,而虚假条件被计算为0
。这使得查询更短,而且更具可读性(如果您知道诀窍的话)