2

私は次のマテリアライズドビューを見ています

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

そして、そのSELECT[]部分が何をしているのかを理解しようとしています。

一部の国を理解しています。AVG(変位)は変位列の平均です。しかし、COUNT(*)は何をしていますか。また、AVG変位は、単一の船の統計と何の関係がありますか?

関係:

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

4 に答える 4

3

count(*)グループごとの行数を返すだけです。

ステートメントによりgroup by、同じ国のすべての行が1つの行にマージされます。count(*)そのような1つのグループに入る行の量を返しますが、はそのグループのすべての行AVG(displacement)の平均値です。displacement

したがって、変位は単一の船ではなく、船のグループに対するものです。

そのようなグループに入る行が1つしかない場合は、count1を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 に答える