MySQL中的多个计数和组

时间:2015-10-27 20:45:02

标签: mysql

我有一个带有2个不同表的数据库1用于具有以下结构的订单详细信息:

--------------
|order_id   |
--------------
|1234       |
--------------
|1235       |
--------------
|1236       |
--------------
|1237       |
--------------

另一个表用于记录订单更新的次数

---------------------------------------------------
|update_id  |   order_id    |   updated_on      |
---------------------------------------------------
|1          |   1234        |   2015-10-27 17:57:28
---------------------------------------------------
|2          |   1234        |   2015-10-28 17:57:28
---------------------------------------------------
|3          |   1235        |   2015-12-27 17:57:28
---------------------------------------------------
|4          |   1236        |   2015-12-28 17:57:28
---------------------------------------------------
|5          |   1236        |   2015-12-28 17:57:28
---------------------------------------------------

现在我希望它为每个订单ID显示2种类型的count(),即一个订单更新的总次数,第二个是今天订单更新的次数(2015年) -10-28)

----------------------------------------------
|order_id   |   updated |   updated_today   |
----------------------------------------------
|1234       |   2       |   1
----------------------------------------------
|1235       |   1       |   0
----------------------------------------------
|1236       |   2       |   2
----------------------------------------------
|1237       |   0       |   0
----------------------------------------------

在这方面,我们将非常感谢帮助

2 个答案:

答案 0 :(得分:0)

按订单ID分组,并进行简单计数,以及更新日期=今天的总和。

select o.order_id,
       count(ou.order_id) updated,
       sum(date(updated_date) <=> date(now())) updated_today
from   orders o
left join order_update ou on (o.order_id = ou.order_id)
group by o.order_id;

答案 1 :(得分:0)

在此尝试:

您只需更改表名和字段名

SELECT
  o.order_id,
  COUNT(*),
  SUM(IF( CURRENT_DATE() = DATE(l.updated_on),1,0) ) AS updated_today
  FROM order o
  LEFT JOIN loggin l ON l.order_id = o.order_id
  GROUP BY o.order_id;