table就像:
| 国家|水果|尺寸|
| - -----|- -----|- -----|
| 日本|苹果|大|
| 日本|苹果|小|
| 日本|橙子|大|
| 新加坡|香蕉|小|
预期输出如下所示:
| 国家|类型|总计|
| - -----|- -----|- -----|
| 日本|2| 3|
| 新加坡|一个|一个|
我设法分别进行了计数。
果实类型:
SELECT country, COUNT(DISTINCT fruit) AS type
FROM Table
GROUP BY country
水果总数:
SELECT COUNT(fruit)
FROM Table
GROUP BY country
2条答案
按热度按时间bhmjp9jg1#
就像前面提到的那样,您可以简单地将两个聚合放在同一个
SELECT
列表中。count(*)
更快。一个区别:它计数所有行,而count(fruit)
只计数非空值。如果fruit是NOT NULL
,两者都是一样的。count(DISTINCT ...)
比较贵。根据Postgres版本和数据分布,这可能会更快(做同样的事情):byqmnocz2#
您可以将查询合并为一个: