提问者:小点点

计数2列Mysql[已关闭]


计数2列

这是我的桌子

Table A
|----------------------|---------------------|------------------|
|          id          |        typec                NOM        |    
|----------------------|---------------------|------------------|
|           1          |        Plat         |        A         |
|----------------------|---------------------|------------------|
|           2          |    Steeple-chase    |        B         |
|----------------------|---------------------|------------------|
|           3          |        Haies        |        C         |
|----------------------|---------------------|------------------|

我希望输出为:

+------------+--------+--------------+---------+-----------+
|      nom   |  Plat  |Steeple-chase |  Haies  |   ALL     |
+------------+--------+--------------+---------+-----------+
|      A     |   10   |      2       |    8    |    20     |
+------------+--------+--------------+---------+-----------+
|      B     |  100   |      50      |   50    |   100     |
+------------+--------+--------------+------+--------------+
|      C     |   5    |       5      |    5    |   15      |
+------------+--------+--------------+---------+-----------+

目前,我运行此查询,但结果不是很好

SELECT nom, typec, count(*) AS count
FROM p_mu.cachedate
GROUP BY nom, typec;

谢谢你的帮助。。。


共2个答案

匿名用户

我怀疑您正在寻找枢轴/条件聚合(如果您发布了与期望结果匹配的示例数据,我会更加确定)

SELECT nom, sum(case when typec ='plat' then 1 else 0 end) as 'plat', 
       sum(case when typec ='steeple_chase' then 1 else 0 end) as 'steeple-chase',
       sum(case when typec ='hais' then 1 else 0 end) as 'hais',
       count(*) AS 'all'
FROM p_mu.cachedate
GROUP BY nom;

匿名用户

您要查找的函数不是COUNT(),它是+运算符

SELECT nom, typec1, typec2, typec3, typec1+typec2+typec3 AS ALL
FROM p_mu.cachedate
GROUP BY nom

试试看,如果这是有效的,并分享结果!