【问题标题】:MySQL Grouping by [duplicate]MySQL分组[重复]
【发布时间】: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;

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

【问题讨论】:

标签: mysql sql group-by


【解决方案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”,它必须不存在,现在完美了,再次感谢:)
  • 随时欢迎您
猜你喜欢
  • 1970-01-01
  • 2020-11-30
  • 2011-08-29
  • 2018-08-12
  • 2015-07-22
  • 1970-01-01
  • 2016-11-12
  • 2014-10-14
  • 1970-01-01
相关资源
最近更新 更多