重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
SELECT DATE_FORMAT(time,'%Y-%m-%d') as day, sum(case when amount0 then amount when amount=0 then 0 end) as amount1
成都创新互联公司专注于天祝藏族自治企业网站建设,自适应网站建设,成都商城网站开发。天祝藏族自治网站建设公司,为天祝藏族自治等地区提供建站服务。全流程按需求定制开发,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务
from table where time='2014-11-01' group by day;
我没有测试。time表示日期,amount表示数量。查询11月后每天成交数量
select
day (日期字段),
SUM( 用于合计的字段)
from
表
group by
day (日期字段)
1.近n个月
不废话 直接上sql
SELECT
DATE_FORMAT( @cdate := DATE_ADD( @cdate, INTERVAL - 1 MONTH ), '%Y-%m' ) AS cmonth
FROM
( SELECT @cdate := DATE_ADD( '2020-7-1', INTERVAL + 1 MONTH ) FROM information_schema.CHARACTER_SETS ) t0
LIMIT 100
注意 information_schema.CHARACTER_SETS这个表是mysql系统表,可以取到的最大月数和这个表的数量有关,如果又更多的时间要选,可以查询其他表,数据量不要太大,太大会影响查询效率
2 同理 上近n天
SELECT
@cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY )AS DAYS
FROM
( SELECT @cdate := DATE_ADD( '2020-7-1', INTERVAL + 1 DAY ) FROM information_schema.CHARACTER_SETS ) t0
LIMIT 100
假设你的表为 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)
select user_id,DATE_ADD(MAX(DATE_SUB(checktime,INTERVAL 4 hour)),INTERVAL 4 hour) ,DATE_ADD(MIN(DATE_SUB(checktime,INTERVAL 4 hour)),INTERVAL 4 hour) from checkinout group by user_id,DATE_FORMAT(DATE_SUB(checktime,INTERVAL 4 hour),'%Y-%m-%d') ;
试一下上面的sql语句, 我觉得可以实现你的要求,解决思路就是肯定要分组,普通情况我们分组是同一天分在一组,这样会导致比如'2016-07-13 03:00:00' 这种时间会分在07-13号这一天里 ,按你的要求应该分在07-12这天里 才对,,所以我们把时间减去四个小时然后再分组,DATE_SUB(checktime,INTERVAL 4 hour) 这个就是减去四个小时,然后用DATE_FORMAT 格式化成年月日的格式进行group by,select 的时候 MAX(DATE_SUB(checktime,INTERVAL 4 hour),min(...) 这个是查减了四小时的最大值和最小,也就是当天离开时间和到公司时间(减四小时),在用DATE_ADD 加四个小时,就是原本离开时间和到公司时间