简体   繁体   English

Php,MySql,单个查询有两个计数

[英]Php, MySql, single query with two counts

I need to perform two different counts in one single query. 我需要在一个查询中执行两个不同的计数。

First Query: count number of transactions from today 30 days back.
Second Query: count number of transactions from last 60 until last 30 days.

I have first query working fine as: 我有第一个查询工作正常:

SELECT 
  COUNT(*) AS sales 
FROM
  transactions 
WHERE DATE(created) > DATE_SUB(NOW(), INTERVAL 30 DAY) 
  AND STATUS = 1;

How can I incorporate the second query into the above? 如何将第二个查询合并到上面?

You can use COUNT and CASE WHEN : 您可以使用COUNTCASE WHEN

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;

or UNION : UNION

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM