MySQL分组[重复]

Posted

技术标签:

【中文标题】MySQL分组[重复]【英文标题】:MySQL Grouping by [duplicate] 【发布时间】:2018-05-25 20:28:18 【问题描述】:

我在 mysql 中有一张表:

tblUser 
    - name      varchar(200)
    - sex       varchar(200)
    - signDate` datetime

我正在寻找以下结果:

monthDate   M    F
01          0    1
06          0    2
07          0    2
08          0    2
09          0    2
10          1    0
11          1    0
12          0    2

但我得到以下信息,我的问题是我无法弄清楚如何将 Sex M 和 F 的结果在一行中显示为我正在寻找的先前结果。

我的结果:

monthDate   sex   count(1)
 1          F     1
 6          F     2
 7          F     2
 8          F     2
 9          F     2
10          M     1
11          M     1
12          F     2

我的查询:

SELECT monthDate
      ,sex
      ,count(1)
FROM
(
    SELECT name
        ,sex
        ,MONTH(signDate) monthDate
    FROM  dbPaciente.tblUser
    GROUP BY monthDate
            ,sex
    ORDER BY monthDate asc
            ,sex
) tableResult
GROUP BY monthDate;

请告诉我如何解决它,好吗? 提前致谢,

【问题讨论】:

***.com/questions/7674786/mysql-pivot-table 【参考方案1】:
SELECT monthDate
      ,count(case when sex='f' then sex else null end)F
      ,count(case when sex='m' then sex else null end)M
FROM
(
    SELECT name
        ,sex
        ,MONTH(signDate) monthDate
    FROM  dbPaciente.tblUser
    GROUP BY monthDate
            ,sex
    ORDER BY monthDate asc
            ,sex
) tableResult
GROUP BY monthDate

【讨论】:

使用条件聚合 亲爱的丹尼尔,太棒了!非常感谢,只是我在内部查询中输入了错误的“GROUP BY monthDate ,sex”,它必须不存在,现在完美了,再次感谢:) 随时欢迎您

以上是关于MySQL分组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在mysql中按2字段分组[重复]

MySQL:如何获得每个分组的 x 个结果 [重复]

MYSQL按日,周和月分组,带有php时间戳[重复]

如何按 MySQL 中的最后一个重复项对记录进行分组?

从 mysql 表中检索所有行,但首先将它们分组以删除重复

mysql计算行并按月分组[重复]