2

我正在查看以下物化视图

CREATE MATERIALIZED VIEW ShipStats AS
SELECT country, AVG(displacement), COUNT(*)
FROM classes, ships
WHERE classes.class = ships.name
GROUP BY country;

并试图弄清楚它的 SELECT [] 部分在做什么。

我了解选择国家。AVG(displacement) 是位移列的平均值。但是 COUNT(*) 在做什么。此外,AVG 排水量与单艘船的统计数据有什么关系?

关系:

Classes(class, type, country, numGuns, bore, displacement)
Ships(name, class, launched)
4

4 回答 4

3

count(*)只返回每组的行数。

由于该group by语句,同一国家/地区的所有行都合并为一行。count(*)返回进入一个这样的组的行数,而是该组中所有行AVG(displacement)的平均值。displacement

所以排水量不是针对单艘船,而是针对一组船。

如果只有一行进入这样的组,则count返回 1 并average返回该行的位移值。

于 2012-04-23T16:49:38.763 回答
1

它正在选择国家、在该国家注册的船舶的平均排水量以及在该国家注册的船舶数量(至少假设列名与实际情况相符)。

于 2012-04-23T16:49:58.347 回答
1

Count(*) 给出每个国家的行数。

于 2012-04-23T16:52:09.507 回答
0

它正在计算组中的项目数。但是,我相信它还包括 NULL 值和重复项。

于 2012-04-23T16:52:00.277 回答