PostgreSQL GROUP BY子句用于將具有相同數(shù)據(jù)的表中的這些行分組在一起。 它與SELECT語句一起使用。
GROUP BY子句通過多個(gè)記錄收集數(shù)據(jù),并將結(jié)果分組到一個(gè)或多個(gè)列。 它也用于減少輸出中的冗余。
語法:
SELECT column-list
FROM table_name
WHERE [conditions ]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN
注意:在
GROUP BY多個(gè)列的情況下,您使用的任何列進(jìn)行分組時(shí),要確保這些列應(yīng)在列表中可用。
看看下面的例子:
我們來看一下表“EMPLOYEES”,具有以下數(shù)據(jù)。

執(zhí)行以下查詢:
SELECT NAME, SUM(SALARY)
FROM EMPLOYEES
GROUP BY NAME;
查詢得到如下結(jié)果 -
再來看看下面這個(gè)例子:
我們在“EMPLOYEES”表中插入一些重復(fù)的記錄。添加以下數(shù)據(jù):
INSERT INTO EMPLOYEES VALUES (6, '李洋', 24, '深圳市福田區(qū)中山路', 135000);
INSERT INTO EMPLOYEES VALUES (7, 'Manisha', 19, 'Noida', 125000);
INSERT INTO EMPLOYEES VALUES (8, 'Larry', 45, 'Texas', 165000);
現(xiàn)在有以下數(shù)據(jù),有一些數(shù)據(jù)是重復(fù)的 -

執(zhí)行以下查詢以消除冗余:
SELECT NAME, SUM(SALARY)
FROM EMPLOYEES
GROUP BY NAME;
上面的SQL語句是按名字(NAME)執(zhí)行分組統(tǒng)計(jì)每個(gè)名字的薪水總額,如:兩個(gè)名字叫作李洋的薪水總額是:320000等等,得到結(jié)果如下 -

在上面的例子中,當(dāng)我們使用GROUP BY NAME時(shí),可以看到重復(fù)的名字?jǐn)?shù)據(jù)記錄被合并。 它指定GROUP BY減少冗余。