如何按特定标准计算每一行

时间:2017-10-05 23:01:12

标签: mysql count row

我有条件雇用条件:

H=Hour, P=Present, S=Sick, A=Alpha

ID Name H1  H2 H3 H4 P  S   A
1  AAA   h  h  h  h  
2  BBB   s  s  h  h
3  CCC   a  h  h  h

如何得到这样的结果:

ID Name H1  H2 H3 H4 P  S   A
1  AAA   h  h  h  h  4  0   0  
2  BBB   s  s  h  h  2  2   0
3  CCC   a  h  h  h  3  0   1

我已经浏览和浏览了2天,尝试尝试但我无法弄清楚如何执行mysql查询来解决这个问题...

提前致谢并抱歉我的英语不好

1 个答案:

答案 0 :(得分:0)

我已经对您的帖子中的数据做了一些假设,我认为以下查询可能是您一直试图整理的内容:

SELECT
id 'ID',
name 'Name',
h1 'H1',
h2 'H2',
h3 'H3',
h4 'H4',
SUM(if(h1='h',1,0)+if(h2='h',1,0)+if(h3='h',1,0)+if(h4='h',1,0)) as 'P',
SUM(if(h1='s',1,0)+if(h2='s',1,0)+if(h3='s',1,0)+if(h4='s',1,0)) as 'S', 
SUM(if(h1='a',1,0)+if(h2='a',1,0)+if(h3='a',1,0)+if(h4='a',1,0)) as 'A' 
FROM myTable
GROUP BY id

您可以随意忽略列名称,因为它只能与您在帖子中添加的内容相匹配。

基本上,我们只是检查每个字段中每列值的出现次数,提供一个' 1'如果它在那里,并且' 0'如果它不是。然后,我们将所有这些结果一起添加,以生成该事件的多列计数。

然后我们GROUP BY id只计算每个ID的行。

尽管如此,可能有一种更优雅的方式。