结合两个表中的 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
具有大致相同的效果,但具有更多的功能和灵活性。
这两个查询给出了相同的结果,但是第二个查询让您可以继续添加 JOIN
和 COUNT
语句。
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
我有两个表:
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
具有大致相同的效果,但具有更多的功能和灵活性。
这两个查询给出了相同的结果,但是第二个查询让您可以继续添加 JOIN
和 COUNT
语句。
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