最近做项目有遇到查询一周内一个产品有多少用户在使用,在百度找了好久,然后拼接起来的,这里总结一下。
首先 查询一周内数据的sql
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(表中时间字段);
因为数据中时间格式是yyyy-MM-dd HH:mm:ss,而我需要按照每天来查,所以需要用到DATE_FORMAT转一下时间格式
SELECT DATE_FORMAT(表中时间字段,'%Y-%m-%d') as time , count(*) as count FROM 表名 GROUP BY time;
然后就要看自己的需求了,我查询的表中存在一个用户多条记录,所以我的sql综合如下
SELECT
t.createTime,
COUNT(*) AS count
FROM
(
SELECT
MOBILE,
CREATE_DT,
DATE_FORMAT(CREATE_DT, '%Y-%m-%d') AS createTime,
COUNT(*)
FROM
a_lock_log
WHERE
DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(CREATE_DT)
GROUP BY
createTime,
MOBILE
) t
GROUP BY
t.createTime
ORDER BY
t.CREATE_DT ASC
SELECT
*
FROM
t_sr_cfg_ftp_task t
WHERE
t.TSK_TYPE_CD = '2'
AND t.TSK_STS_CD = '0'
AND t.REMOTE_PATH = 'CSVC'
AND DATE_FORMAT(t.OPER_TIME,'%Y-%m-%d %H:%i:%s') > DATE_FORMAT('2018-01-27 11:00:00','%Y-%m-%d %H:%i:%s')
AND t.LOCAL_PATH IS NULL;