捆绑多个mySQL计数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了捆绑多个mySQL计数相关的知识,希望对你有一定的参考价值。

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

我有一张桌子:

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个查询):

SELECT COUNT(*) FROM table WHERE state = "NY" AND time LIKE "% 09:%"

现在我想得到记录的数量:

  • 州=纽约州
  • 时间(HOUR)是一样的

要得到:

  • 2x 09
  • 1x 11
  • 1x 14

对于另一个查询中的LA也一样。

有没有办法使用group byjoin将查询捆绑到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)

以上是关于捆绑多个mySQL计数的主要内容,如果未能解决你的问题,请参考以下文章

将捆绑数据传递到以viewPager开头的片段

数据从父片段传递到选项卡片段(子) - Android

对多个计数字段求和

每个日期/时间具有多个组的 MySQL 查询计数

MYSQL 多个条件语句进行计数

来自多个表的mysql计数(*)