【问题标题】:MySQL: Count two date columns and group by dayMySQL:计算两个日期列并按天分组
【发布时间】:2016-10-19 19:51:13
【问题描述】:

我需要绘制一个折线图,将特定日期之间每一天的订单和取货情况可视化。订单和取货日期存储在 unixtime 中。我的桌子看起来像这样:

id    order_date    pickup_date
-------------------------------
1     1472749664     1472133376
2     1472551372     1472567548
3     1472652545     1472901368
4     1473154659     1473512323
5     1473512923     1475229824
6     1475586643     1475652635

我追求的是这样的

date        orders    pickups
-------------------------------
01-09-2016  1         0
02-09-2016  4         1
03-09-2016  3         2
04-09-2016  7         1
05-09-2016  0         0
06-09-2016  1         1
07-09-2016  6         3
08-09-2016  0         0
08-09-2016  3         5
10-09-2016  2         4

我知道我可以按一列计算,例如:

SELECT
    COUNT(id) AS orders,
    FROM_UNIXTIME(order_dates, '%d-%m-%Y') AS date
FROM orders
GROUP BY request_date

但我不确定如何计算两列并将它们分组为每一天。

【问题讨论】:

  • 编写另一个查询来计算取件,然后在日期加入。

标签: mysql


【解决方案1】:

您可以使用这样的查询:

SELECT sum(orders) as orders, sum(pickups) as pickups, date
FROM (
SELECT
    COUNT(id) AS orders, 0 as pickups,
    FROM_UNIXTIME(`order_date`, '%d-%m-%Y') AS date
FROM orders
GROUP BY order_date
UNION
SELECT
    0 AS orders, COUNT(id) as pickups,
    FROM_UNIXTIME(`pickup_date`, '%d-%m-%Y') AS date
FROM orders
GROUP BY pickup_date ) ut
GROUP BY date

Here 是个小提琴。

【讨论】:

    猜你喜欢
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 2010-10-30
    相关资源
    最近更新 更多