【问题标题】:SQL query: multiple count group by dateSQL查询:按日期多次计数组
【发布时间】:2015-05-28 17:42:46
【问题描述】:

我的 mySQL 数据库中有 2 个表:

Table Sensor
_id    Name
1      Sensor1
2      Sensor2

Table History
_id    Sensor_fk    Date 
1      1            2015-05-24
2      2            2015-05-27
3      1            2015-05-28
4      1            2015-05-28
5      2            2015-05-28
...

我需要一个返回如下内容的查询:

Date          Sensor1    Sensor2
2015-05-24    1          0
2015-05-27    0          1
2015-05-28    2          1

这是按日期分组的 2 个传感器的计数。我将用这些数据填充一个条形图。 有人可以帮助我吗?

【问题讨论】:

    标签: mysql group-by


    【解决方案1】:

    您需要对每个 Sensor 的两个单独的 GROUP BY 子句执行 UNION。喜欢

    (Select count(*) as Sensor1 from History h
         where h.Sensor_FK = 1
         group by DateField
    )
    
    Union
    
    (Select Count(*) as Sensor2 from History h
        whre h.Sensor_FK = 2
        group by DateField
       )
    

    【讨论】:

    • 感谢您的帮助。它不工作。我想我必须使用 PIVOT 将我的 Sensor1 和 Sensor2 反转为我的查询列。但我不知道如何
    【解决方案2】:

    我明白了。

    SELECT h.date as Date, 
    count(CASE WHEN h.sensor_fk = 1 THEN h.sensor_fk END) as 'Sensor1',
    count(CASE WHEN h.sensor_fk = 2 THEN h.sensor_fk END) as 'Sensor2'
    FROM history h
    GROUP BY Date
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多