Php、MySql、带两个计数的单个查询
我需要在一个查询中执行两个不同的计数Php、MySql、带两个计数的单个查询,php,mysql,sql,count,Php,Mysql,Sql,Count,我需要在一个查询中执行两个不同的计数 First Query: count number of transactions from today 30 days back. Second Query: count number of transactions from last 60 until last 30 days. 我的第一个查询工作正常,如下所示: SELECT COUNT(*) AS sales FROM transactions WHERE DATE(created)
First Query: count number of transactions from today 30 days back.
Second Query: count number of transactions from last 60 until last 30 days.
我的第一个查询工作正常,如下所示:
SELECT
COUNT(*) AS sales
FROM
transactions
WHERE DATE(created) > DATE_SUB(NOW(), INTERVAL 30 DAY)
AND STATUS = 1;
如何将第二个查询合并到上述查询中?您可以在以下情况下使用
COUNT
和CASE:
SELECT
COUNT(CASE WHEN DATE(created) > DATE_SUB(NOW(), INTERVAL 30 DAY) THEN 1 END) AS c1,
COUNT(CASE WHEN DATE(created) <= DATE_SUB(NOW(), INTERVAL 30 DAY) THEN 1 END) AS c2
FROM transactions
WHERE DATE(created) > DATE_SUB(NOW(), INTERVAL 60 DAY)
AND STATUS = 1;
谢谢你,这很好用。我还没有测试过Union,但用例更干净了。@Alko不客气。如果您的问题已经解决,您可以:)
SELECT COUNT(*) AS sales
FROM transactions
WHERE DATE(created) > DATE_SUB(NOW(), INTERVAL 30 DAY)
AND STATUS = 1
UNION ALL
SELECT COUNT(*)
FROM transactions
WHERE DATE(created) > DATE_SUB(NOW(), INTERVAL 60 DAY)
AND DATE(created) < DATE_SUB(NOW(), INTERVAL 30 DAY)
AND STATUS = 1