Как считать, используя LEFT JOIN? - PullRequest
1 голос
/ 20 марта 2012

Мне нужно составить список с компанией, которая сканирует больше всего ... У меня есть две таблицы: Exhibitors и Leads

Leads содержат каждое «действие», которое каждоеэкспоненты делают.Иногда в таблице Exhibitors есть две учетные записи для одной и той же компании.Например, PepsiCO может иметь две учетные записи.

Ключ / столбец, который связывает оба, называется ExhibitorID.

Мне нужно получить топ-20 с наибольшим количеством потенциальных клиентов (поэтому COUNT (*) в leads), но мне нужно сгруппировать по компаниям в таблице Exhibitors.

В настоящее время я использую это:

    SELECT t2.ExhibitorID, t2.Company, t2.Username, t1.Count 
      FROM exhibitors AS t2
         , ( SELECT ExhibitorID, COUNT( * ) AS Count 
               FROM leads AS l 
              WHERE l.ContractorID = 100 
                AND l.ShowID =  "20120228AB" 
              GROUP BY l.ExhibitorID 
              ORDER BY COUNT(*) DESC 
              LIMIT 20 ) AS t1 
     WHERE t2.ExhibitorID = t1.ExhibitorID 
     ORDER BY t1.Count DESC

Но оно не группируется по компаниям.Спасибо за вашу помощь.

Ответы [ 3 ]

3 голосов
/ 20 марта 2012
    select e.exhibitorid, count(l.leadid) 
    from leads l 
        inner join exhibitors on e.exhibitorid = l.exhibitorid 
        and l.showid = "20120228AB" and l.contractorid = 100
    group by e.exhibitorid 
    order by count(l.contractorid) DESC
    limit 20;

Если есть связи, это все равно будет возвращать только верхний 20. Так что если вы хотите связи, то здесь, похоже, есть обходной путь MySql Альтернатива MySQL для T-SQL WITH TIES

2 голосов
/ 20 марта 2012
SELECT
    e.Company,
    COUNT(l.LeadId) AS Actions
FROM
    Exhibitors AS e 
    LEFT JOIN Leads AS l
        ON l.ExhibitorID = e.ExhibitorID
        AND l.ContractorID = 100
        AND l.ShowID = "20120228AB"
GROUP BY e.Company
ORDER BY Actions DESC
LIMIT 20;
0 голосов
/ 20 марта 2012

Вы можете сгруппироваться по Компании и присоединиться по ExhibitorID:

select  e.Company
,       count(distinct l.LeadID) as LeadCount
from    Exhibitors e
join    Leads l
on      l.ExhibitorID = e.ExhibitorID
        and l.ShowID = "20120228AB" 
        and l.ContractorID = 100
group by
        e.Company
order by
        LeadCount DESC
limit   20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...