SQL计数地址总数

时间:2017-12-06 13:06:28

标签: mysql sql group-by

这是我的数据

Vehicle    | Street       | Number | Postcode
Car          Fakestreet      3       0010NK
Motorbike    Fakestreet      3       0010NK
Car          Fakestreet      4       0010NK
Car          Fakestreet      1       0010NK
Companycar   Fakestreet      1       0010NK

我想计算每个邮政编码的唯一地址,所以我希望看到:

Postcode | Total_adresses
0010NK   | 3

我认为这必须是一个简单的查询,所以我有这个:

SELECT Postcode, COUNT(*) AS total_adresses
FROM my_database
WHERE Postcode = '0010NK'
GROUP BY Postcode, Street, Number

但我得到了这个结果:

Postcode | total_adresses
0010NK   | 2
0010NK   | 2
0010NK   | 1

我无法理解为什么它没有给我预期的结果。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

只汇总一列:

app.use('/api',function(req, res, next){
   console.log('A new request received at ' + Date.now())
   next()
})

SELECT Postcode, COUNT(*) AS total_adresses FROM my_database WHERE Postcode = '0010NK' GROUP BY Postcode; 中的键组合定义了聚合结果集中的每个。每个GROUP BY只需要一行,因此这是Postcode中唯一的密钥。

编辑:

要计算不同地址的数量,请使用GROUP BY。这是一种方式:

COUNT(DISTINCT)

一些数据库支持:

SELECT Postcode, COUNT(DISTINCT CONCAT(STREET, ' ', NUMBER, ' ', POSTALCODE) AS total_adresses
FROM my_database
WHERE Postcode = '0010NK'
GROUP BY Postcode;

答案 1 :(得分:1)

使用派生表返回唯一地址。然后GROUP BY结果:

select Postcode, count(*)
from
(
    SELECT DISTINCT Street, Number, Postcode
    FROM my_database
) dt
group by Postcode