【问题标题】:SUM, COUNT with LEFT JOIN?求和,用左连接计数?
【发布时间】:2016-12-18 08:49:10
【问题描述】:

如何使用 LEFT JOIN 获得正确的总和和计数?

现在两个表的行总和..

可以不用子查询吗?

SELECT 
    t1.Continent, t1.Region, 
    COUNT( t1.Region ) AS cRegion, t1.LifeExpectancy, 
    SUM( t1.Population ) AS sPopulation, SUM( t2.CountryCode ) AS cCities
    FROM Country AS t1
    LEFT JOIN City AS t2 ON t1.Code = t2.CountryCode
    GROUP BY t1.Region
    ORDER BY t1.Continent ASC 

城市表

国家/地区表

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您的查询没有任何意义。但是,如果您将 City 和 Country 表连接在一起,并按区域分组,那么您可以计算每个区域的以下统计信息:

    • 每个地区的城市数
    • 每个地区的国家数量
    • 每个地区的总人口


    SELECT t1.Region,
           COUNT(*) AS cityCount,
           COUNT(DISTINCT t1.code) AS countryCount,
           SUM(t2.Population) AS regionPop
    FROM Country t1
    LEFT JOIN City t2
        ON t1.Code = t2.CountryCode
    GROUP BY t1.Region
    

    【讨论】:

    • 究竟是什么问题?
    猜你喜欢
    • 2019-05-19
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2011-01-14
    • 2014-08-08
    • 2015-05-31
    相关资源
    最近更新 更多