mysql按周怎么做统计的简单介绍-成都创新互联网站建设

关于创新互联

多方位宣传企业产品与服务 突出企业形象

公司简介 公司的服务 荣誉资质 新闻动态 联系我们

mysql按周怎么做统计的简单介绍

mysql查询一周内每天的记录数。

假设members 表里有个字段是日期(CDATA),和一个ID字段,要统计每天的条数,可以用下面的语句:

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比金华网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式金华网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖金华地区。费用合理售后完善,10余年实体公司更值得信赖。

SELECT i.CDATA,count(*) from members i

where cdata=date_sub(now(),interval dayofweek(now()) day) and cdata = date_add(now(),interval 7-dayofweek(now()) day) group by i.CDATA

以上语句统计的是从这周的第一天(星期天)到这周的最后一天(星期六)每天的记录条数。

程序里取出来循环得到每天的条数(查询出来的结果已经按日期分好,只要读取就行)

mysql 自动分月统计

一、打开MySQL工具,我用的是Navicat Premium

二、新建查询,输入sql命令

举例如下:

分组查询

1、年度分组

2、月度分组

3、先按年度分组,再按月度分组

4、按年月分组

SELECT count(ArticleId), date_format(FROM_UNIXTIME( `BlogCreateTime`),'%y%m') sdate FROM `blog_article` group by sdate

结果:

count( ArticleId ) sdate

17 0901

11 0902

5 0903

6 0904

2 0905

1 0907

12 0908

6 0909

11 0910

3 0911

其他方法参考:

我想做一个统计,数据库是mysql,统计出每天,每周,每月的记录数

建表的时候加个字段表示日期,然后查sql手册...

select count(*) from `table` where `date`='{某天}'

select count(*) from `table` where date_format(`date`,'%V')='{某周}'

select count(*) from `table` where date_format(`date`,'%c')='{某月}'

另一种方法:

select count( * ) from projects where editdate = '2007-11-9 00:00:00' and editdate =

'2007-11-9 24:00:00';

第三种方法:

每周的

SQL codeselect count(*) as cnt,week(editdate) as weekflg from projects where year(editdate)

=2007 group by weekflg

每月

SQL codeselect count(*) as cnt,month(editdate) as monthflg from projects where year

(editdate)=2007 group by monthflg

每天

SQL codeselect count(*) as cnt from projects group by date(editdate)

mysql中DATE_FORMAT(date, format)函数可根据format字符串格式化日期或日期和时间值date,返回结果

串。

也可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值,以便得到所希望的格式。根据format字符串格式

化date值:

下面是函数的参数说明:

%S, %s 两位数字形式的秒( 00,01, . . ., 59)

%i 两位数字形式的分( 00,01, . . ., 59)

%H 两位数字形式的小时,24 小时(00,01, . . ., 23)

%h, %I 两位数字形式的小时,12 小时(01,02, . . ., 12)

%k 数字形式的小时,24 小时(0,1, . . ., 23)

%l 数字形式的小时,12 小时(1, 2, . . ., 12)

%T 24 小时的时间形式(hh : mm : s s)

%r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)

%p AM 或P M

%W 一周中每一天的名称( Sunday, Monday, . . ., Saturday)

%a 一周中每一天名称的缩写( Sun, Mon, . . ., Sat)

%d 两位数字表示月中的天数( 00, 01, . . ., 31)

%e 数字形式表示月中的天数( 1, 2, . . ., 31)

%D 英文后缀表示月中的天数( 1st, 2nd, 3rd, . . .)

%w 以数字形式表示周中的天数( 0 = Sunday, 1=Monday, . . ., 6=Saturday)

%j 以三位数字表示年中的天数( 001, 002, . . ., 366)

% U 周(0, 1, 52),其中Sunday 为周中的第一天

%u 周(0, 1, 52),其中Monday 为周中的第一天

%M 月名(January, February, . . ., December)

%b 缩写的月名( January, February, . . ., December)

%m 两位数字表示的月份( 01, 02, . . ., 12)

%c 数字表示的月份( 1, 2, . . ., 12)

%Y 四位数字表示的年份

%y 两位数字表示的年份

%% 直接值“%”

如何在mysql中group by week

易客CRM之前的版本中有一个报表是按月统计销售情况,最近有个客户想按周统计销售情况。按月统计的Sql语句比较好写,sql语句如下:

SELECT DATE_FORMAT(ec_salesorder.duedate,’%Y-%m’) as m, sum(ec_salesorder.total) as total, count(*) as so_count FROM ec_salesorder GROUP BY m ORDER BY m,也就是把duedate日期以月的形式显示,然后groupby,那么按周如何统计呢?

搜了一下mysql的manual,在这里找到一个解决方法,通过mysql的week函数来做,sql语句如下:SELECT WEEK(ec_salesorder.duedate) as m, sum(ec_salesorder.total) as total, count(*) as so_count FROM ec_salesorder GROUP BY m ORDER BY m,这个方法有个缺陷,不能显示年份,仅仅靠一个周数不方便查看统计信息。

继续研究mysql manual,在DATE_FORMAT函数介绍发现2个格式符和周有点关系:

%X Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V

%x Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v

把上面的Sql语句中改成:

SELECT DATE_FORMAT(ec_salesorder.duedate,’%x %v’) as m, sum(ec_salesorder.total) as total, count(*) as so_count FROM ec_salesorder GROUP BY m ORDER BY m

显示的结果如下:

m total so_count

2009 11 10000.00 3

2009 12 44000.00 5

如果周日为一周的第一天,那么sql语句应该为:

SELECT DATE_FORMAT(ec_salesorder.duedate,’%X %V’) as m, sum(ec_salesorder.total) as total, count(*) as so_count FROM ec_salesorder GROUP BY m ORDER BY m

结果应该没错,不出意外,易客CRM下个版本将增加按周统计销售情况的报表。

mysql的函数YEARWEEK统计本周数据默认从周一统计还是周日统计?

统计数据库内一周数据时用到 yearweek 函数,查询出来的结果与预期值有较大差距, 原来mysql默认 周日当做一周开始,修改成周一当做开始需要在yearweek函数后的model里面填值1即可

mysql mysql怎么按照自己定义的周统计每周的数据

假设你的表为 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)


分享标题:mysql按周怎么做统计的简单介绍
分享地址:http://kswsj.cn/article/dscppse.html

其他资讯