проблема с использованием count & sum для получения данных из 2 таблиц - PullRequest
0 голосов
/ 17 ноября 2010

У меня есть две таблицы приложений и отведений

таблица применения

submitDate | fName | lName
2010-11-15    joe    smith
2010-11-16    joe    smith
2010-11-15    joe    smith

Таблица Leads

submitDate | click | state
2010-11-15    1      ca
2010-11-16    1      ca
2010-11-16    1      ca
2010-11-15    1      ca
2010-11-15    1      ca
2010-11-15    1      ca
2010-11-15    1      ca
2010-11-15    1      ca

Я хочу, чтобы запрос вернул этот результат

submitDate | application | clicks | percent
2010-11-15    2            6          33%
2010-11-16    1            2          50%

Я попробовал следующее

SELECT `submitDate` , count(`submitDate`)  AS 'comp',(select sum(`click`) from `leads`

 WHERE `submitDate` between '2010-11-15' AND '2010-11-16' group by `submitDate`)as

 'clicks'  from `applications` WHERE `submitDate` between '2010-11-15' AND

 '2010-11-16' group by `submitDate`

это возвращает ошибку

#1242 - Subquery returns more than 1 row

и попробовал следующее

SELECT `leads`.`submitDate` , count(`leads`.`submitDate`) 
 AS 'application',sum(`click`) as 'clicks'  
from `applications`,`leads` WHERE `leads`.`submitDate` between 
'2010-11-15' AND '2010-11-16' group by `leads`.`submitDate`

это возвращает следующий результат

submitDate | application | clicks
2010-11-15    60           60
2010-11-16    6            6

таблица отведений имеет 22 столбца / 20 = 2010-11-15 и 2 2010-11-16 таблица применения аналогична приведенной выше таблице

Прошу прощения за длинное объяснение, но чтобы быть ясным

есть идеи?

и о добавлении новых процентов поля, которые разделили приложения / лиды Так что результат будет иметь 4 столбца

заранее спасибо

Ответы [ 3 ]

0 голосов
/ 17 ноября 2010
select a.submitdate
, count(a.submitdate)
, (select sum(clicks) from leads where submitdate = a.submitdate) 
, count(a.submitdate)/(select sum(clicks) from leads where submitdate = a.submitdate) percent
from applications a
group by a.submitdate;
0 голосов
/ 17 ноября 2010
SELECT DISTINCT a.submitDate,
  (SELECT count(*) FROM applications GROUP BY submitDate) as App,
  (SELECT count(*) FROM leads        GROUP BY submitDate) as Leads

Единственное предостережение состоит в том, чтобы включать в себя группу where по мере необходимости, в том числе в подзапросах.

0 голосов
/ 17 ноября 2010
select d.date, coalesce(a.count, 0) as applications, coalesce(b.count, 0) as clicks
from 
(
    select date from applications
    union
    select date from leads
) d
left outer join (
    select date, count(*) as count
    from applications 
    group by date
) a on d.date = a.date
left outer join (
    select date, count(*) as count
    from leads
    group by date
) b on d.date = b.date
...