【问题标题】:Group sum from two tables according to date in MySQL根据 MySQL 中的日期对两个表中的总和进行分组
【发布时间】:2010-11-06 20:49:59
【问题描述】:

我有两个不同的表,lead 和 click。我想查询 MySQL 以获取按日期排序的点击和潜在客户产生的佣金总和。

领导:

id|date      |commission
 1|2009-06-01|400
 2|2009-06-01|300
 3|2009-06-03|350

点击:

id|date      |commission
 1|2009-06-01|1
 2|2009-06-03|2
 3|2009-06-03|1

我想创建一个给我的查询(如果可能的话,还可以获取没有生成潜在客户或点击的日期):

date      |commission click|commission lead|total commission
2009-06-01|               1|            700|             701
2009-06-02|               0|              0|               0
2009-06-02|               3|            350|             353

(日期实际上是真实数据库中的日期时间。)

我想我必须结合:

SELECT count(*) as number_clicks, sum(click.commission) as sum_clicks,
 date(click.time) as click_date from click group by click_date order by click_date

与:

SELECT count(*)as number_leads, sum(lead.commission) as sum_leads,
 date(lead.time) as lead_date from lead group by lead_date order by lead_date

但我不能让他们一起工作。

【问题讨论】:

  • 我为什么要编辑古代问题?道歉。

标签: mysql date sum


【解决方案1】:

这不会得到带有零的日期,因为您需要一个日期表或一个存储过程来循环日期。一种方法是从联合查询中进行子选择(未经测试):

SELECT commission_date, SUM(click_commission), SUM(lead_commission), SUM(total_commission)
FROM (SELECT DATE(click.time) AS commission_date, click.commission AS click_commission,
             0 AS lead_commission, click.commission AS total_commission
      FROM click
      UNION ALL
      SELECT DATE(lead.time) AS commission_date, 0 AS click_commission,
             lead.commission AS lead_commission, lead.commission AS total_commission
      FROM lead) AS foo
GROUP BY commission_date
ORDER BY commission_date

【讨论】:

  • 得到“每个派生表都必须有自己的别名”,但是在最后一个 SELECT 之后和 GROUP 之前添加“AS foo”之后,它就像要求的那样工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多