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”
还有开始时间