【发布时间】:2012-02-27 19:20:38
【问题描述】:
之前有人问过我这个问题,一直无法回答,一直困扰着我..
假设我们有一张桌子,上面有客户及其居住城市。
如果我想查询城市的唯一数量,以及每个城市出现的次数。
为了更清楚:
Toronto
Toronto
Toronto
Oshawa
Oshawa
Distinct cities: 2
Toronto: 3
Oshawa: 2
答案可能很简单,我现在脑子里一片混乱!
【问题讨论】:
之前有人问过我这个问题,一直无法回答,一直困扰着我..
假设我们有一张桌子,上面有客户及其居住城市。
如果我想查询城市的唯一数量,以及每个城市出现的次数。
为了更清楚:
Toronto
Toronto
Toronto
Oshawa
Oshawa
Distinct cities: 2
Toronto: 3
Oshawa: 2
答案可能很简单,我现在脑子里一片混乱!
【问题讨论】:
这将为每个城市返回一行,包含城市名称和城市出现的次数:
SELECT
city,
COUNT(*)
FROM clients
GROUP BY city
城市总数就是查询返回的行数。如果你真的想让它出现在记录集上,我可以想到两种方法(我都不是特别喜欢)。
联合查询:
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
【讨论】:
为此使用分组依据。
select city, count(*) from clients group by city
【讨论】:
这里是选择不同城市的sql:
select distinct city from Clients;
这是用于选择名称及其数量的 sql:
select city, count(*) from Clients group by city;
【讨论】: