【问题标题】:Select daily amount of specific values from same column [duplicate]从同一列中选择每日特定值的数量[重复]
【发布时间】:2014-12-30 17:06:07
【问题描述】:

我正在构建一个反馈工具,并且我有一个反馈表,其结构如下:

ID  |  Satisfaction  |  Timestamp
--------------------------------------------
 1                0     2014-01-01 00:00:00
 2                5     2014-01-01 00:00:00
 3               10     2014-01-02 00:00:00
 4                5     2014-01-02 00:00:00
 5               10     2014-01-03 00:00:00
 6                0     2014-01-03 00:00:00
 7               10     2014-01-03 00:00:00
 8                5     2014-01-04 00:00:00
 9                5     2014-01-04 00:00:00

如何获得每个“满意度”值的每日计数?

例如:

Date        |  0's  |  5's  |  10's          
--------------------------------------
2014-01-01  |  1    |  1    |  0
2014-01-02  |  0    |  1    |  1
2014-01-03  |  1    |  0    |  2
2014-01-04  |  0    |  2    |  0

我想它涉及一个 GROUP BY 时间戳,但我不确定如何选择

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

    在 MySQL 中转换此数据的最简单方法:

    select date(timestamp),
           sum(satisfaction = 0) as zeroes,
           sum(satisfaction = 5) as fives,
           sum(satisfaction = 10) as tens
    from feedback
    group by date(timestamp);
    

    【讨论】:

      【解决方案2】:

      解决了!我能够使用 sum() 和 case 语句的组合来获取各个值的计数。

      SELECT
        DATE(timestamp),
        IFNULL(sum(case when satisfaction = 0 then 1 end), 0) as 'unhappy',
        IFNULL(sum(case when satisfaction = 5 then 1 end), 0) as 'neutral',
        IFNULL(sum(case when satisfaction = 10 then 1 end), 0) as 'happy' 
      FROM feedback
      GROUP BY DATE(timestamp)
      

      【讨论】:

        猜你喜欢
        • 2019-01-12
        • 2017-07-24
        • 1970-01-01
        • 2012-12-18
        • 1970-01-01
        • 2015-08-06
        • 2021-02-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多