Php MySQL-统计用户数量(过去30天、过去一年、所有时间)
我正在尝试进行一个查询,该查询检查clients表,并返回具有过去30天、365天和所有时间的特定值的用户计数 所有时间计数都很简单:Php MySQL-统计用户数量(过去30天、过去一年、所有时间),php,mysql,Php,Mysql,我正在尝试进行一个查询,该查询检查clients表,并返回具有过去30天、365天和所有时间的特定值的用户计数 所有时间计数都很简单: $stmt = $conn->prepare("SELECT count(id) AS count FROM clients WHERE referred = :refid"); $stmt->bindParam(':refid', $refid); $stmt->execute(); $totalreferrals = $stmt->
$stmt = $conn->prepare("SELECT count(id) AS count FROM clients WHERE referred = :refid");
$stmt->bindParam(':refid', $refid);
$stmt->execute();
$totalreferrals = $stmt->fetchAll();
表:
id | signup | reffered |
----------------------------
2 | 2012-08-24 | 14 |
----------------------------
3 | 2011-10-13 | 14 |
我不确定是否可以使用UNION组合查询,或者是否应该只进行三个不同的查询。有什么帮助吗?也许这可以解决问题:
SELECT count(id) AS count FROM clients WHERE referred = :refid AND BETWEEN ADDDATE(NOW(), INTERVAL -1 MONTH) AND NOW();
SELECT count(id) AS count FROM clients WHERE referred = :refid AND BETWEEN ADDDATE(NOW(), INTERVAL -1 YEAR) AND NOW();
也许这可以解决问题:
SELECT count(id) AS count FROM clients WHERE referred = :refid AND BETWEEN ADDDATE(NOW(), INTERVAL -1 MONTH) AND NOW();
SELECT count(id) AS count FROM clients WHERE referred = :refid AND BETWEEN ADDDATE(NOW(), INTERVAL -1 YEAR) AND NOW();
我想你希望它是列的,而不是行的,如果是这样的话
SELECT COUNT(CASE WHEN DATEDIFF(CURDATE(),signup) <= 30 THEN id
ELSE NULL
END) AS Last30days ,
COUNT(CASE WHEN DATEDIFF(CURDATE(), signup) <= 365 THEN id
ELSE NULL
END) AS Last365Days ,
COUNT(*) AS Alltime
FROM Table1
WHERE reffered = 14
SELECT COUNT(CASE-WHEN-DATEDIFF(CURDATE(),signup)我想您希望它在列中,而不是在行中,如果是这样的话
SELECT COUNT(CASE WHEN DATEDIFF(CURDATE(),signup) <= 30 THEN id
ELSE NULL
END) AS Last30days ,
COUNT(CASE WHEN DATEDIFF(CURDATE(), signup) <= 365 THEN id
ELSE NULL
END) AS Last365Days ,
COUNT(*) AS Alltime
FROM Table1
WHERE reffered = 14
SELECT COUNT(CASE-WHEN-DATEDIFF(CURDATE(),signup))我喜欢这个解决方案。以前从未使用过WHEN语句。我喜欢这个解决方案。以前从未使用过WHEN语句。