简体   繁体   English

MySQL - 如何按组计算总数

[英]MySQL - how to sum counts by group

I have three tables connected with the following relation: 我有三个表连接以下关系:

"agency" 1-n "agent" 1-n "ad" 
(agency has many agents and each agent has many ads)

I want to get a list of ad counts by agency, like this: 我希望按代理机构获取广告计数列表,如下所示:

agency_name   |   ad_count
---------------------------
agency 1      |     15
agency 2      |     25
agency 3      |     0

Where even agencies with 0 ads would be shown. 甚至可以展示0个广告的代理商。 Is this possible? 这可能吗? Thanks a lot! 非常感谢!

Since you did not provide the exact table structure I have to guess a little 由于你没有提供确切的表结构,我不得不猜一点

select agency.agency_name, 
       count(ad.id) as ad_count
from agency 
left outer join agent on agency.id = agent.agency_id
left outer join ad on ad.id = agent.ad_id
group by agency.agency_name

SQL Fiddle SQL小提琴

select agency.agency_name, count(ad.id)
from agency
left join agent on agent.agency_id = agency.id
left join ad on ad.agent_id = agent.id
group by agency.agency_name

Try this: 尝试这个:

SELECT a.agencyname, IFNULL(b.adcnt, 0) adcount  
FROM agency 
LEFT JOIN (SELECT a.agencyid, SUM(adcnt) adcnt 
           FROM agent a 
           INNER JOIN (SELECT agentid, COUNT(agentid) adcnt 
                       FROM ad 
                       GROUP BY agentid
                      ) b ON a.agentid = b.agentid 
           GROUP BY agencyid) b ON a.agencyid = b.agencyid

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM