sql查询近7天/30天内的数据,分类汇总合
1、获取近七天的数据SELECTclick_date AS date,IFNULL( people.total, 0 ) AS totalFROM(SELECTclick_dateFROM(SELECTcurdate( ) AS click_date UNION ALLSELECTdate_sub( curdate( ), INTERVAL 1 DAY ) AS click_date UNION
·
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
取得结果:

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