Сумма группы из двух таблиц по дате в MySQL - PullRequest
1 голос
/ 30 июня 2009

У меня есть две разные таблицы: лидерство и клик. Я хотел бы запросить 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

Но я не могу заставить их работать вместе.

1 Ответ

2 голосов
/ 30 июня 2009

Это не дает даты с нулями, для этого вам понадобится либо таблица дат, либо хранимая процедура для циклического перемещения по датам. Одним из способов сделать это является выборка из запроса объединения (не проверено):

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...