MogDB-opengauss中的聚集與分組操作

openGaussbaby發表於2024-03-26

MogDB/opengauss 中的聚集與分組操作
COUNT:對結果集中的元組數量進行計數,如果是 COUNT(*),那麼會統計所有元組(包括 NULL 值)的數量,如果是 COUNT(colname),那麼會忽略 NULL 值,只統計非 NULL 值的數量。

SUM:對引數中屬性的所有值求和。

AVG:對引數中屬性的而所有值取平均值,要求列的型別必須是數值型別,其中 NULL 值將會被忽略。

MAX:對引數中屬性求最大值,NULL 值會被忽略。

MIN:對引數中屬性求最小值,NULL 值會被忽略。

對錶 t1 的所有元組數量進行統計,具體語句如下:

MogDB=# SELECT COUNT(*) FROM t1;
count

 3

(1 row)
如果給 COUNT 函式的引數指定為表示式(或列值),則只統計表示式結果為非 NULL 值的個數。

對錶 t1 的 c2 列中非 NULL 值的個數進行統計,具體語句如下:

MogDB=# SELECT COUNT(c2) FROM t1;
count

 2

(1 row)
如果在引數中指定了 DISTINCT 關鍵字,則先對結果中的值去掉重複值,然後再統計數量,如果不指定 DISTINCT,則預設為 ALL。

對錶 t1 的 c1 列中非 NULL 值的個數進行統計,去掉重複值,具體語句如下:

SELECT COUNT(DISTINCT t1.c2) FROM t1;

AVG、SUM、MIN/MAX 函式同理。

對錶 t1 的 c1 列做求和操作,具體語句如下:

MogDB=# SELECT COUNT(DISTINCT t1.c1) FROM t1;
count

 2

(1 row)
對錶 t1 的 c1 列求平均值,具體語句如下:

MogDB=# SELECT AVG(c1) FROM t1;
avg

1.3333333333333333
(1 row)
根據表 t1 的 c2 列做分組,求每個分組內 c1 的個數,具體語句如下:

MogDB=# SELECT c2, COUNT(c1) FROM t1 GROUP BY c2;
c2 | count
----+-------
| 1
2 | 2
(2 rows)
根據表 t1 的 c2 列做分組,求每個分組內 c1 的個數,將個數大於 1 的分組投影出來,具體語句如下:

MogDB=# SELECT c2, COUNT(c1) FROM t1 GROUP BY c2 HAVING count(c1) >1;
c2 | count
----+-------
2 | 2
(1 row)

相關文章