我之前被问过这个问题,而且无法回答它一直困扰着我。
让我们说我们有一张客户及其居住城市的桌子。
如果我想查询唯一的城市数量,以及每个城市出现的次数,那该怎么办?
更清楚:
Toronto
Toronto
Toronto
Oshawa
Oshawa
Distinct cities: 2
Toronto: 3
Oshawa: 2
答案可能很简单,我的思绪现在只是糊涂了!
答案 0 :(得分:3)
这将为每个城市返回一行,其中包含城市名称和城市出现的次数:
SELECT
city,
COUNT(*)
FROM clients
GROUP BY city
城市总数只是查询返回的行数。如果你真的希望它出现在记录集上,我可以想到两种方式(我都不喜欢)。
UNION查询:
SELECT 'CITIES' as city, COUNT(DISTINCT city)
FROM clients
UNION
SELECT city, COUNT(*)
FROM clients
GROUP BY city
SELECT
子句中的子查询:
SELECT
(SELECT COUNT(DISTINCT city)) AS all,
city,
COUNT(*)
FROM clients
GROUP BY city
答案 1 :(得分:2)
为此使用分组。
select city, count(*) from clients group by city
答案 2 :(得分:1)
这是用于选择不同城市的sql:
select distinct city from Clients;
这是用于选择名称的sql以及有多少名称:
select city, count(*) from Clients group by city;