MySQL将计数排序到不同的列中

MySQL将计数排序到不同的列中,mysql,Mysql,我有下面的表结构 ID | capacity | startDateTime 1 | 2 | 2013-11-26 13:23:23 2 | 3 | 2013-11-26 14:23:21 3 | 2 | 2013-11-26 13:44:44 4 | 6 | 2013-11-26 14:24:22 我正在尝试获取按小时和30分钟间隔分组的容量类别的ID数 我的输出的一个例子是 Hour | Minute | Cap

我有下面的表结构

ID | capacity | startDateTime      
1  | 2        | 2013-11-26 13:23:23
2  | 3        | 2013-11-26 14:23:21
3  | 2        | 2013-11-26 13:44:44
4  | 6        | 2013-11-26 14:24:22 
我正在尝试获取按小时和30分钟间隔分组的容量类别的ID数

我的输出的一个例子是

Hour | Minute | Capacity1-2 | Capacity3-4 | Capacity5above
13   | 0      | 1           | 0           | 0
13   | 1      | 1           | 0           | 0
14   | 0      | 0           | 1           | 1
Minute=0
代表
ID
s,其中
startDateTime
在一小时的第30分钟之前(例如13:00:00至13:29:29),而
Minute=1
代表
ID
s,其中` startDateTime'在一小时的第30分钟之后

我曾经写过这样的东西,但它给了我全部的交易记录。我在将容量类别放入单独的列时遇到问题

SELECT HOUR(startDateTime) AS Hour, 
  FLOOR(MINUTE(startDateTime)/30) AS Minute,
  COUNT(DISTINCT ID) as numTransactions 
  FROM transaction t 
  WHERE startDateTime >= '2013-11-26 00:00:00'
   AND queueStartTime <= '2013-11-26 23:59:59'  
  GROUP BY HOUR(startDateTime), FLOOR(MINUTE(startDateTime)/30)
选择小时(startDateTime)作为小时,
楼层(分钟(开始时间)/30)为分钟,
将(不同ID)计数为numTransactions
来自事务t
其中startDateTime>=“2013-11-26 00:00:00”
和queueStartTime尝试以下方法:

SELECT HOUR(startDateTime) AS Hour,
  FLOOR(MINUTE(startDateTime) / 30) AS Minute,
  SUM(CASE WHEN capacity = 1 OR capacity = 2 THEN 1 ELSE 0 END) AS Capacity1_2,
  SUM(CASE WHEN capacity = 3 OR capacity = 4 THEN 1 ELSE 0 END) AS Capacity3_4,
  SUM(CASE WHEN capacity > 4 THEN 1 ELSE 0 END) AS Capacity5Above
FROM TRANSACTION t
WHERE startDateTime >= '2013-11-26 00:00:00'
  AND queueStartTime <= '2013-11-26 23:59:59'
GROUP BY HOUR(startDateTime),
  FLOOR(MINUTE(startDateTime) / 30)
选择小时(startDateTime)作为小时,
楼层(分钟(开始时间)/30)为分钟,
总和(当容量=1或容量=2时,则为1,否则为0结束)作为容量1_2,
总和(当容量=3或容量=4时,则为1,否则为0结束)作为容量3_4,
与上述容量5之和(容量大于4时为1,否则为0结束)
来自事务t
其中startDateTime>=“2013-11-26 00:00:00”
和queueStartTime尝试以下方法:

SELECT HOUR(startDateTime) AS Hour,
  FLOOR(MINUTE(startDateTime) / 30) AS Minute,
  SUM(CASE WHEN capacity = 1 OR capacity = 2 THEN 1 ELSE 0 END) AS Capacity1_2,
  SUM(CASE WHEN capacity = 3 OR capacity = 4 THEN 1 ELSE 0 END) AS Capacity3_4,
  SUM(CASE WHEN capacity > 4 THEN 1 ELSE 0 END) AS Capacity5Above
FROM TRANSACTION t
WHERE startDateTime >= '2013-11-26 00:00:00'
  AND queueStartTime <= '2013-11-26 23:59:59'
GROUP BY HOUR(startDateTime),
  FLOOR(MINUTE(startDateTime) / 30)
选择小时(startDateTime)作为小时,
楼层(分钟(开始时间)/30)为分钟,
总和(当容量=1或容量=2时,则为1,否则为0结束)作为容量1_2,
总和(当容量=3或容量=4时,则为1,否则为0结束)作为容量3_4,
与上述容量5之和(容量大于4时为1,否则为0结束)
来自事务t
其中startDateTime>=“2013-11-26 00:00:00”
还有开始时间