2012-04-23 20 views
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) 

答えて

3

count(*)は単にグループごとの行の量を返します。

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

したがって、移動は単一の船ではなく、船のグループで行われます。

このようなグループに入る行が1つだけの場合、countは1を返し、averageはその行の変位値を返します。

1

国名、その国に登録されている船の平均移動数、およびその国に登録されている船舶の数(少なくとも、列名が現実とうまく一致していることを前提にしています)を選択しています。

0

グループ内のアイテム数をカウントしています。私はそれもNULL値と重複を含むと信じています。

1

Count(*)は国あたりの行数を示します。

関連する問題