case when

  1. SELECT
  2. date(uv.created_at) dt,
  3. CASE
  4. WHEN uv.device_type = 1 THEN
  5. 'Android'
  6. WHEN uv.device_type = 2 THEN
  7. 'ios'
  8. WHEN uv.device_type = 3 THEN
  9. 'touch'
  10. WHEN uv.device_type = 4 THEN
  11. 'pc'
  12. END kud,
  13. count(DISTINCT uv.device_id) 点阅人数
  14. from t591.user_device_visit_record uv
  15. where uv.type = 1
  16. AND uv.created_at >= '2022-01-09 00:00:00'
  17. AND uv.created_at < '2022-01-10 00:00:00'
  18. GROUP BY dt,kud

日期相关

1 上个月1号

  1. SELECT DATE_FORMAT(CURDATE() - INTERVAL 0 MONTH,'%Y-%m-01 00:00:00')

2 上周几日期

已经获取到了本周一的日期,再多减一天就能得到上周日数据,获取上周一即多减7天(相对本周一),最后如下

  1. # 获取本周一
  2. SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w')-1 day)
  3. # 获取上周一
  4. SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w')-1+7 day)
  5. # 上上周一
  6. SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w')-1+7+7 day)
  7. # 获取本周日
  8. SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w')-7 day)
  9. # 获取上周日
  10. SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w') day)
  11. # 上上周日
  12. SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w')+7 day)
  13. # 依此类推