select 分组字段,sum(统计字段) from 表名 group by 分组字段
专注于为中小企业提供网站建设、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业格尔木免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
这样统计啊?那比较有难度,即使统计也得用union all来连接,而且不可动态分配
2
3
4
5
6
7
8
9
10
11
12
13
14
-- time_str '2016-11-20 04:31:11'
-- date_str 20161120
select concat(left(date_format(time_str, '%y-%m-%d %h:%i'),15),'0') as time_flag, count(*) as count from `security`.`cmd_info` where `date_str`=20161120 group by time_flag order by time_flag; -- 127 rows
select round(unix_timestamp(time_str)/(10 * 60)) as timekey, count(*) from `security`.`cmd_info` where `date_str`=20161120 group by timekey order by timekey; -- 126 rows
-- 以上2个SQL语句的思路类似——使用「group by」进行区分,但是方法有所不同,前者只能针对10分钟(或1小时)级别,后者可以动态调整间隔大小,两者效率差不多,可以根据实际情况选用
select concat(date(time_str),' ',hour(time_str),':',round(minute(time_str)/10,0)*10), count(*) from `security`.`cmd_info` where `date_str`=20161120 group by date(time_str), hour(time_str), round(minute(time_str)/10,0)*10; -- 145 rows
select concat(date(time_str),' ',hour(time_str),':',floor(minute(time_str)/10)*10), count(*) from `security`.`cmd_info` where `date_str`=20161120 group by date(time_str), hour(time_str), floor(minute(time_str)/10)*10; -- 127 rows (和 date_format 那个等价)
1、创建一张表,同时插入数据。
2、按照价格排序.select * from 表名 order by 字段名 [升序|降序]。
3、按照class分组(group by),数据会分成三类,肉类、蔬菜类、水果类。
4、按照class分组后在对结果做一个处理,统计三个类总钱数分别是多少。这里sum是mysql提供的内置函数(聚合函数),统计合的。
5、分组了之后可以通过聚合函数可以做一系列的查询操作,查询每个类中有多少个。
6、分组后面跟having做过滤。
group by substring(date_time,18,20)/2
大概就是这个思路 你好好看看吧
假设你的表为 ta 日期字段是 dt
那么,以 2015-01-01为起始日,每5天累总计数为:
select datediff(dt, '2015-01-01') div 5 as d5 , count(*)
from ta
group by (datediff(dt, '2015-01-01') div 5)