1、获取近七天的数据

SELECT
	click_date AS date,
	IFNULL( people.total, 0 ) AS total 
FROM
	(
	SELECT
		click_date 
	FROM
		(
		SELECT
			curdate( ) AS click_date UNION ALL
		SELECT
			date_sub( curdate( ), INTERVAL 1 DAY ) AS click_date UNION ALL
		SELECT
			date_sub( curdate( ), INTERVAL 2 DAY ) AS click_date UNION ALL
		SELECT
			date_sub( curdate( ), INTERVAL 3 DAY ) AS click_date UNION ALL
		SELECT
			date_sub( curdate( ), INTERVAL 4 DAY ) AS click_date UNION ALL
		SELECT
			date_sub( curdate( ), INTERVAL 5 DAY ) AS click_date UNION ALL
		SELECT
			date_sub( curdate( ), INTERVAL 6 DAY ) AS click_date 
		) T 
	) t
	LEFT JOIN (
	SELECT
		date_format( people.create_time, '%Y-%m-%d' ) dat,
		COUNT( 1 ) total
	FROM
		people 
	WHERE
		DATE_SUB( CURDATE( ), INTERVAL 7 DAY ) <= people.create_time 
		GROUP BY date_format( people.create_time, '%Y-%m-%d' ) 
	) people ON people.dat = t.click_date 
ORDER BY
	date ASC

取得结果:
在这里插入图片描述

2、获取近30天内的数据

SELECT
	`date` AS `date`,
	IFNULL( total, 0 ) AS total 
FROM
	(
	SELECT
		DATE_FORMAT( DATE_SUB( NOW( ), INTERVAL ac - 1 DAY ), '%Y-%m-%d' ) AS date 
	FROM
		(
		SELECT
			@ai := @ai + 1 AS ac 
		FROM
			( SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 ) ac1,
			( SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 ) ac2,
			( SELECT @ai := 0 ) xc0 
		) ad 
	) ad
	LEFT JOIN (
	SELECT
		date_format( people.create_time, '%Y-%m-%d' ) dat,
		COUNT( 1 ) total 
	FROM
		people 
	WHERE
		DATE_SUB( CURDATE( ), INTERVAL 30 DAY ) <= people.create_time 
	GROUP BY
		date_format( people.create_time, '%Y-%m-%d' ) 
	) t ON t.dat = ad.date 
ORDER BY
	date ASC

取得结果:
在这里插入图片描述
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐