统计当前年份每个小时的数据,求大神解
求教一条sql,谢谢大家了,是这样的,有一个表叫share_time,有开始时间(start_time)和结束时间(end_time)两个字段,现在,我要统计出,当前年份每个小时的数据,0-24点,比如开始时间是:2019-07-05 16:29:52,结束时间是:2019-07-05 18:00:00,那么,16点数量就要+1,18点的数量就要+1,还有他们之间的区间也得+1,他们之间有个17点,17点的数量就要+1,我现在已经大概写了一半的思路,不过只能统计开始时间的,还有点错误。
下面是我写的sql:那个小时如果一条数据没有的话就给个0,where条件就是查询状态=1的和当前年份
SELECT
a.HOUR HOUR,
ifnull( b.count, 0 ) count
FROM
(
SELECT
0 HOUR UNION ALL
SELECT
1 HOUR UNION ALL
SELECT
2 HOUR UNION ALL
SELECT
3 HOUR UNION ALL
SELECT
4 HOUR UNION ALL
SELECT
5 HOUR UNION ALL
SELECT
6 HOUR UNION ALL
SELECT
7 HOUR UNION ALL
SELECT
8 HOUR UNION ALL
SELECT
9 HOUR UNION ALL
SELECT
10 HOUR UNION ALL
SELECT
11 HOUR UNION ALL
SELECT
12 HOUR UNION ALL
SELECT
13 HOUR UNION ALL
SELECT
14 HOUR UNION ALL
SELECT
15 HOUR UNION ALL
SELECT
16 HOUR UNION ALL
SELECT
17 HOUR UNION ALL
SELECT
18 HOUR UNION ALL
SELECT
19 HOUR UNION ALL
SELECT
20 HOUR UNION ALL
SELECT
21 HOUR UNION ALL
SELECT
22 HOUR UNION ALL
SELECT
23 HOUR
) a
LEFT JOIN (
SELECT HOUR
( start_time) HOUR,
count( start_time) count
FROM
share_time
WHERE
order_status = 1 and YEAR ( start_time ) = YEAR ( NOW( ) )
GROUP BY
date_format( start_time, '%Y%m%d-%H' ) ,
HOUR
) b ON a.HOUR = b.HOUR
ORDER BY
HOUR


下面是我写的sql:那个小时如果一条数据没有的话就给个0,where条件就是查询状态=1的和当前年份
SELECT
a.HOUR HOUR,
ifnull( b.count, 0 ) count
FROM
(
SELECT
0 HOUR UNION ALL
SELECT
1 HOUR UNION ALL
SELECT
2 HOUR UNION ALL
SELECT
3 HOUR UNION ALL
SELECT
4 HOUR UNION ALL
SELECT
5 HOUR UNION ALL
SELECT
6 HOUR UNION ALL
SELECT
7 HOUR UNION ALL
SELECT
8 HOUR UNION ALL
SELECT
9 HOUR UNION ALL
SELECT
10 HOUR UNION ALL
SELECT
11 HOUR UNION ALL
SELECT
12 HOUR UNION ALL
SELECT
13 HOUR UNION ALL
SELECT
14 HOUR UNION ALL
SELECT
15 HOUR UNION ALL
SELECT
16 HOUR UNION ALL
SELECT
17 HOUR UNION ALL
SELECT
18 HOUR UNION ALL
SELECT
19 HOUR UNION ALL
SELECT
20 HOUR UNION ALL
SELECT
21 HOUR UNION ALL
SELECT
22 HOUR UNION ALL
SELECT
23 HOUR
) a
LEFT JOIN (
SELECT HOUR
( start_time) HOUR,
count( start_time) count
FROM
share_time
WHERE
order_status = 1 and YEAR ( start_time ) = YEAR ( NOW( ) )
GROUP BY
date_format( start_time, '%Y%m%d-%H' ) ,
HOUR
) b ON a.HOUR = b.HOUR
ORDER BY
HOUR


...全文
相关推荐
SQLserver 实现分组统计查询(按月、小时分组)
设置AccessCount字段可以根据需求在特定的时间范围内如果是相同IP访问就在AccessCount上累加。 代码如下:Create table Counter ( CounterID int identity(1,1) not null, IP varchar(20), AccessDateTime datetime, AccessCount int ) 该表在这儿只是演示使用,所以只提供了最基本的字段 现在往表中插入几条记录 insert into Counter select ‘127.0.0.1’,getdate(),1 union all select ‘127.0.0.2’,
mysql 统计一天24小时数据默认补0SQL
利用mysql的函数实现统计查询一天24小时的数据,然后统计时间没有的数据默认补上了零。
详解mysql 获取某个时间段每一天、每一个小时的统计数据
主要介绍了mysql 获取某个时间段每一天、每一个小时的统计数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
sqlserver/mysql按天、按小时、按分钟统计连续时间段数据【推荐】
最近小编接到这样的需求,公司需要按天,按小时查看数据,可以直观的看到时间段的数据峰值。这篇文章主要介绍了sqlserver/mysql按天,按小时,按分钟统计连续时间段数据 ,需要的朋友可以参考下
Oracle统计一天内每小时的数据量
Oracle统计一天内每小时的数据量。在某小时内有数据,该时间段会被统计出来;该时间段内没有交易,该时间段不会被统计出来,默认为0即可


疑难问题
