如何 return 记录中具有给定值的字段的计数?
How to return a count of fields with a given value in a record?
我有一个包含以下字段的数据库 table:
---------------------
FIELDS : | H1 | H2 | H3 | H4
---------------------
VALUES : | A | B | A | C
---------------------
对于给定的记录(行),我想计算值为 A
的字段数。例如,在上面,有两个值为 A
的字段,因此预期结果将是:2
我怎样才能做到这一点?
我试图从数据库的角度回答问题。
您有一个包含一行或多行的 table,并且每一行在四列中都有一个 'A' 或其他内容。对于给定的行(或许多行),您想要获取其中包含 'A' 的列数。
正如一位评论者所指出的,您不能对字母求和,但您可以检查某个值是否是您要查找的值,然后将此事件计为 1 或 0。最后求和 这些 值和return 总和。
SELECT (CASE H1 WHEN 'A' THEN 1 ELSE 0 END) +
(CASE H2 WHEN 'A' THEN 1 ELSE 0 END) +
(CASE H3 WHEN 'A' THEN 1 ELSE 0 END) +
(CASE H4 WHEN 'A' THEN 1 ELSE 0 END) AS number_of_a
FROM name_of_your_table;
对于您的示例行,这将 return:
NUMBER_OF_A
===========
2
如果您有不止一行,您将获得每一行的 As 数。
我测试了它的工作原理感谢您的帮助。
SELECT count(H1) + count(H2) + count(H3) + count(H4) + count(H5) +
count(H6) + count(H7) + count(H8) as TOT
from Table T
where T.H1 = 'A' or T.H2 = 'A' or T.H3 = 'A' or T.H4 = 'A'
or T.H5 = 'A' or T.H6 = 'A' or T.H7 = 'A' or T.H8 = 'A'
group by T.ID
order by 1 DESC
其他解决方案...
我有一个包含以下字段的数据库 table:
---------------------
FIELDS : | H1 | H2 | H3 | H4
---------------------
VALUES : | A | B | A | C
---------------------
对于给定的记录(行),我想计算值为 A
的字段数。例如,在上面,有两个值为 A
的字段,因此预期结果将是:2
我怎样才能做到这一点?
我试图从数据库的角度回答问题。
您有一个包含一行或多行的 table,并且每一行在四列中都有一个 'A' 或其他内容。对于给定的行(或许多行),您想要获取其中包含 'A' 的列数。
正如一位评论者所指出的,您不能对字母求和,但您可以检查某个值是否是您要查找的值,然后将此事件计为 1 或 0。最后求和 这些 值和return 总和。
SELECT (CASE H1 WHEN 'A' THEN 1 ELSE 0 END) +
(CASE H2 WHEN 'A' THEN 1 ELSE 0 END) +
(CASE H3 WHEN 'A' THEN 1 ELSE 0 END) +
(CASE H4 WHEN 'A' THEN 1 ELSE 0 END) AS number_of_a
FROM name_of_your_table;
对于您的示例行,这将 return:
NUMBER_OF_A
===========
2
如果您有不止一行,您将获得每一行的 As 数。
我测试了它的工作原理感谢您的帮助。
SELECT count(H1) + count(H2) + count(H3) + count(H4) + count(H5) +
count(H6) + count(H7) + count(H8) as TOT
from Table T
where T.H1 = 'A' or T.H2 = 'A' or T.H3 = 'A' or T.H4 = 'A'
or T.H5 = 'A' or T.H6 = 'A' or T.H7 = 'A' or T.H8 = 'A'
group by T.ID
order by 1 DESC
其他解决方案...