选择在过去30天内和过去7天内在一个有效查询中注册的用户

Bac*_*kus 1 mysql sql

我有这个查询,用于选择过去30天内的用户注册数量:

SELECT
  COUNT(*) AS UserCount30
FROM
  User
WHERE
  User.UserDateCreated > (CURDATE() - INTERVAL 30 DAY)
Run Code Online (Sandbox Code Playgroud)

然后我有这个查询,选择过去7天内注册的用户数

SELECT
  COUNT(*) AS UserCount7
FROM
  User
WHERE
  User.UserDateCreated > (CURDATE() - INTERVAL 7 DAY)
Run Code Online (Sandbox Code Playgroud)

理想情况下,这些都将成为一个更大的查询的一部分.我怎么能在一个有效查询中获得这两个值,最好不使用子查询.

小智 6

拉30天并计算(*).然后做一个总和,并且总和中的expr有if语句如果在7天内返回1,如果不是则返回0.

SELECT COUNT(*) AS UserCount30, 
       SUM(if((CURDATE() - INTERVAL 7 DAY) < User.UserDateCreated) 1 else 0)
  FROM USER
 WHERE User.UserDateCreated > (CURDATE() - INTERVAL 30 DAY)
Run Code Online (Sandbox Code Playgroud)