这个简单的查询是什么意思?

时间:2012-04-23 16:46:21

标签: mysql

我正在查看以下物化视图

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 个答案:

答案 0 :(得分:3)

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

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

因此,排水量不适用于单艘船舶,而是适用于一组船舶。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

Count(*)表示每个国家/地区的行数。

答案 3 :(得分:0)

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