MySQL按时间统计每个小时记录数

MySQL按时间统计每个小时记录数

方案1:

?


1

2

3

4

5

6

7

SELECT  @rownum := @rownum + 1 AS ID,

        CONCAT((CASE WHEN t.hour = 24 THEN 0 ELSE t.hour END),‘:00:00‘) AS TIME, COUNT(*) AS COUNT

FROM (SELECT id, HOUR(DATE_FORMAT(createtime,‘%H:%i:%s‘))+1 AS HOUR FROM baby WHERE DATE_FORMAT(createtime,‘%Y-%m-%d‘)=‘2016-10-16‘) t,

     (SELECT @rownum := 0) r

GROUP BY TIME ORDER BY ID

//这个计数, 是LESS THAN TIME的计数方法, 即11:xx:xx的记录是记到12:00:00下面的, 而不是11:00:00;

上面的修改

?


1

2

3

4

5

SELECT  @rownum := @rownum + 1 AS ID,

        CONCAT((CASE WHEN t.hour = 24 THEN 0 ELSE t.hour END),‘‘) AS TIME, COUNT(*) AS COUNT

FROM (SELECT id, HOUR(DATE_FORMAT(createtime,‘%H:%i:%s‘)) AS HOUR FROM baby WHERE DATE_FORMAT(createtime,‘%Y-%m-%d‘)=‘2016-10-16‘) t,

     (SELECT @rownum := 0) r

GROUP BY TIME ORDER BY ID

方案2

?


1

SELECT LEFT( createtime, 13 ) , COUNT( * ) FROM baby WHERE DATE_FORMAT(createtime,‘%Y-%m-%d‘)=‘2016-10-16‘ GROUP BY LEFT( createtime, 13 )

如果当前小时无数据目前无法返回0 ! 不知道怎么处理了

原文地址:https://www.cnblogs.com/jpfss/p/8759199.html

时间: 2024-11-16 12:24:02

MySQL按时间统计每个小时记录数的相关文章

简单按日期查询mysql某张表中的记录数

测试表表结构:mysql> show create table dr_stats\G 1. row Table: dr_stats Create Table: CREATE TABLE `dr_stats` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `views` int(10) NOT NULL DEFAULT '0' COMMENT '展示量', `num` mediumint(8) NOT NULL DEFAULT '0' CO

mysql 添加时间列(用于记录创建时间和修改时间)

在mysql建表的时候需要添加两个时间列,分别记录当前记录的创建时间和修改时间. 好. 下面是建表语句: [sql] view plain copy DROP TABLE IF EXISTS `mytesttable`; CREATE TABLE `mytesttable` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `createtime` datetime DEFAULT CURRENT_TIMESTAMP, `upd

mysql/gbase数据库全库库表记录数统计

file:mysql_rows.sh 运行:sh mysql_rows.sh 库名 脚本内容: #!/bin/bash user=...pwd=... ip=... port=... tb_name=`mysql -u $user -p$pwd -h$ip -P$port -e "select table_name from information_schema.tables where table_schema=$1" |awk 'NR>1{print $1}'`>/da

mysql按时间统计数据,没有数据的时候自动补充0

1.数据库中选择任意一个有数据的表,例如我选择的是 shopping_user 表 SELECT @cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) `date`, 0 AS `sum` FROM ( SELECT @cdate := DATE_ADD( CURDATE( ), INTERVAL + 1 DAY ) FROM shopping_user ) t1 WHERE @cdate > '2017-08-03' 选择一统计时间开始时间,我的开始时间

转:mysql按时间统计数据,没有数据的时候自动补充0

1.数据库中选择任意一个有数据的表,例如我选择的是 shopping_user 表 SELECT @cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) `date`, 0 AS `sum` FROM ( SELECT @cdate := DATE_ADD( CURDATE( ), INTERVAL + 1 DAY ) FROM shopping_user ) t1 WHERE @cdate > '2017-08-03' 选择一统计时间开始时间,我的开始时间

检查mysql迁库前后的数据记录数是否一致

<?php $old = ['host' => '127.0.0.1', 'username' => 'root', 'passwd' => '']; $new = ['host' => '11.11.11.123', 'username' => 'abc', 'passwd' => 'abc']; $old_mysqli = @new mysqli($old['host'], $old['username'], $old['passwd']); if ($old

sqlserver 连接查询的问题,a表无重复记录,与b表中的记录为1对N关系,如何在查得a表信息时统计b表记录数

第一种select t1.id, t1.name, t1.age, (select count(1) from b t2 where t1.id = t2.id) filecount from a t1第二种select t1.id, t1.name, t1.age, t2.filecount from a t1 left join (select id, count(1) filecount from b group by id) t2 on t1.id = t2.id

mysql根据时间统计数据语句

select FROM_UNIXTIME(`createtime`, '%Y年%m月%d日')as retm,count(*) as num  from `user` GROUP BY retm select FROM_UNIXTIME(`pay_tm`, '%Y/%m/%d::')as retm,sum(price)+sum(express_price) as num from `order_orderlist` GROUP BY retm; select FROM_UNIXTIME(`pay

mysql获取group by的总记录行数方法

mysql获取group by内部可以获取到某字段的记录分组统计总数,而无法统计出分组的记录数. mysql的SQL_CALC_FOUND_ROWS 使用 获取查询的行数 在很多分页的程序中都这样写: 代码如下 复制代码 SELECT COUNT(*) from `table` WHERE ......; 查出符合条件的记录总数 代码如下 复制代码 SELECT * FROM `table` WHERE ...... limit M,N; 查询当页要显示的数据 这样的语句可以改成: 代码如下 复