[英]Count number of occurrence of a value in several columns
给出下表:
PERSON IS_EMPLOYED IS_MARRIED IS_STUDENT
John Y N Y
Tom N Y N
Rob N N N
Ron Y Y Y
如何计算每个人的Y和N总数,以得到以下结果?
PERSON TOTAL_Y TOTAL_N
John 2 1
Tom 1 2
Rob 0 3
Ron 3 0
我正在使用Access,并且可以使用VBA来实现,但是我想知道是否有一种更快的解决方案可以仅使用SQL来实现。
您可以尝试以下查询
SELECT
Person,
IFF(IS_EMPLOYED = 'Y', 1,0) + IFF(IS_MARRIED = 'Y', 1,0)+ IFF(IS_STUDENT = 'Y', 1,0) AS TOTAL_Y,
IFF(IS_EMPLOYED = 'N', 1,0) + IFF(IS_MARRIED = 'N', 1,0)+ IFF(IS_STUDENT = 'N', 1,0) AS TOTAL_N
FROM Persons;
有两种方法可以做到这一点。 联合查询将是一个不错的选择,因为将来很容易扩展或添加更多计算:
SELECT
person,
sum(iif(yesno='Y', 1, 0)) as Total_Y,
sum(iif(yesno='N', 1, 0)) as Total_N
FROM
(
SELECT person, is_employed as yesno FROM table
UNION ALL
SELECT person, is_married FROM table
UNION ALL
SELECT person, is_student FROM table
) AS yesnoquery
GROUP BY person
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.