绑定多个mySQL计数

绑定多个mySQL计数,mysql,count,Mysql,Count,我有7个州,11个时间跨度,从09:00到20:00 我有一张桌子: id | name | time | state ________________________________________ 1 | aaaa | 2018-03-06 09:10:13 | NY 2 | bbbb | 2018-03-06 11:15:10 | LA 3 | cccc | 2018-03-06 13:02:11 | LA 4 | dddd | 2018-03-06

我有7个州,11个时间跨度,从09:00到20:00

我有一张桌子:

id | name | time                | state
________________________________________
1  | aaaa | 2018-03-06 09:10:13 | NY
2  | bbbb | 2018-03-06 11:15:10 | LA
3  | cccc | 2018-03-06 13:02:11 | LA
4  | dddd | 2018-03-06 11:06:22 | NY
5  | eeee | 2018-03-06 09:33:17 | NY
6  | ffff | 2018-03-06 09:16:43 | LA
7  | gggg | 2018-03-06 17:08:36 | LA
8  | hhhh | 2018-03-06 14:25:47 | NY
9  | iiii | 2018-03-06 17:02:33 | LA
在这里,我必须在09:00到20:00(7个州x 11个时间跨度=77个查询)的每个可能的州和小时重复相同的查询:

现在我想获得记录的数量,其中:

  • 州=纽约
  • 时间(小时)相同的地方
要获得:

  • 2x 09
  • 1x 11
  • 1x 14
在另一个查询中,LA也是如此

使用
groupby
join
是否有办法将查询捆绑成7个查询而不是77个查询


我不需要显示来自的任何信息,只需要显示行数。

您只需使用按状态和时间分组即可

select group_concat(count(date_trunc('hour',time))," X ",date_trunc('hour',time)),state 
from table group by state, date_trunc('hour',time)
你可以使用这个代码

SELECT
state
, time_hour
, count(*)
FROM
(
SELECT
state 
, SUBSTR(time,12,2) AS time_hour
FROM your_table
) generate_time_hour
GROUP BY state, time_hour

我不确定我是否正确理解了这个问题,但这是我的解决方案:

无串联

SELECT COUNT(*), HOUR(time) AS time, state
FROM `example`
GROUP BY state, HOUR(time)
SELECT CONCAT(COUNT(*), "x", TIME_FORMAT(time, "%H")) AS cnt, state
FROM `example`
GROUP BY state, HOUR(time)
串联

SELECT COUNT(*), HOUR(time) AS time, state
FROM `example`
GROUP BY state, HOUR(time)
SELECT CONCAT(COUNT(*), "x", TIME_FORMAT(time, "%H")) AS cnt, state
FROM `example`
GROUP BY state, HOUR(time)

date\u trunc
是PostgreSQL函数而不是MySQL函数。。您可以在MySQL中用
hour(time)
替换
date\u trunc('hour',time)
,或用
time\u格式(time,“%H”)