查询月、周、日各个分组查询

进行月、周、天的分组查询(年分组进行依次类推可拓展)

-- 查询年、月、周、日各个分组查询
SELECT
	SUM(
	IFNULL( countNumber, 0 )) countNumber,--补0操作
	SUM(
	IFNULL( countPeopleNumber, 0 )) countPeopleNumber,
	CONCAT(
		MIN(
		DATE_FORMAT( aa.date, '%Y-%m-%d' )),
		'-',
		MAX(
		DATE_FORMAT( aa.date, '%Y-%m-%d' ))) dateRange,--当使用weeks or months时可以展示每周或每月一组的范围
	DATE_FORMAT( aa.date, '%Y%m%d' ) days,--利用days进行每天的展示和分组
	DATE_FORMAT( aa.date, '%Y%u' ) weeks,--利用weeks进行每周的展示和分组
	DATE_FORMAT( aa.date, '%Y%m' ) months --利用months进行每月的展示和分组
FROM
	(
	SELECT
		@cdate := date_add( @cdate, INTERVAL - 1 DAY ) date 
	FROM
		--user_oper_log 为自己需要查询的表
		( SELECT @cdate := date_add( CURDATE(), INTERVAL 1 DAY ) FROM user_oper_log ) a 
	) aa
	--left join (自己查询的数据进行日期的关联查询即可)
	LEFT JOIN (
	SELECT
		upl.* 
	FROM
		( SELECT count( 1 ) countNumber, count( DISTINCT user_id ) countPeopleNumber, DATE_FORMAT( oper_time, '%Y-%m-%d' ) operTime FROM user_oper_log GROUP BY operTime ) upl 
		--条件日期范围查询
		WHERE
		upl.operTime BETWEEN DATE_FORMAT( '2022-11-18', '%Y-%m-%d') and DATE_FORMAT( '2022-11-18', '%Y-%m-%d')
	) b ON aa.date = b.operTime 
--进行分组
GROUP BY
	weeks 
--进行分组(days进行排序的方式通用也可以使用weeks or months进行排序)
ORDER BY
	days DESC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值