结合两个表中的 distinct 和 count()

Combining distinct and count() from two tables

我有两个表:

Customers (name, address, postcode (FK))
Postcodes (postcode (PK), county)

我想知道每个县有多少客户。

我假设我需要在邮政编码上进行内部联接,但不知道如何将其与 count(customer_id)distinct(county) 相结合。

只需在公共字段 'postcode ' 中将客户 table 加入邮政编码 table。然后你可以使用 Group By 来获得你的计数和 return 每行 County

SELECT 
    County,
    COUNT(Customer_Id) CustomerCount
FROM    
    Postcodes pc
    JOIN Customers c ON pc.PostalCode = c.PostalCode
GROUP BY
    County

尽管您 可以 使用 SELECT DISTINCT country 编写查询,但它会阻止您进行聚合,例如 COUNT。相反,您可以使用 GROUP BY,它与 DISTINCT 具有大致相同的效果,但具有更多的功能和灵活性。

这两个查询给出了相同的结果,但是第二个查询让您可以继续添加 JOINCOUNT 语句。

SELECT DISTINCT county FROM postcodes

SELECT county FROM postcodes GROUP BY county

总的来说,不要使用SELECT DISTINCT,而是使用这种模式...

SELECT
    postcodes.county,
    COUNT(customers.customer_id)
FROM
    postcodes
INNER JOIN
    customers
        ON customers.postcode = postcodes.postcode
GROUP BY
    postcodes.county