English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PostgreSQL 基础教程

PostgreSQL 高级教程

PostgreSQL 接口

جملة GROUP BY PostgreSQL

在 PostgreSQL 中,GROUP BY 与 SELECT 语句一起使用,用于对相同的数据进行分组。

GROUP BY 在一个 SELECT 语句中,位于 WHERE 子句之后,ORDER BY 子句之前。

语法

以下是 GROUP BY 子句的基本语法:

SELECT column-list
FROM table_name
WHERE [conditions]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN

جملة GROUP BY يجب أن تأتي بعد جملة WHERE، وتحسب قبل جملة ORDER BY.

في جملة GROUP BY، يمكنك تقسيم عمود واحد أو أكثر، ولكن يجب أن تكون الأعمدة الموجودة في قائمة الأعمدة.

مثال على الاستخدام

إنشاء جدول COMPANYتحميل ملف SQL لـ COMPANY )، والمحتوى كما يلي:

w3codeboxdb# select * from COMPANY;
 id | name | age | address | salary
----+-------+-----+-----------+--------
  1 | Paul | 32 | California | 20000
  2 | Allen | 25 | Texas | 15000
  3 | Teddy | 23 | Norway | 20000
  4 | Mark | 25 | Rich-Mond | 65000
  5 | David | 27 | Texas | 85000
  6 | Kim | 22 | South-Hall | 45000
  7 | James | 24 | Houston | 10000
(7 صفوف)

في المثال التالي، سيتم التفرقة بين القيم في حقل NAME لتحديد مجموع رواتب كل شخص:

w3codeboxdb=# SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME;

الحصول على النتائج التالية:

  الاسم | المجموع
 -------+-------
  Teddy | 20000
  Paul | 20000
  Mark | 65000
  David | 85000
  Allen | 15000
  Kim | 45000
  James | 10000
(7 صفوف)

الآن نضيف سجلات ثلاثة في جدول CAMPANY باستخدام الجملة التالية:

INSERT INTO COMPANY VALUES (8, 'Paul', 24, 'Houston', 20000.00);
INSERT INTO COMPANY VALUES (9, 'James', 44, 'Norway', 5000.00);
INSERT INTO COMPANY VALUES (10, 'James', 45, 'Texas', 5000.00);

الآن، هناك أسماء مكررة في جدول COMPANY، البيانات كالتالي:

 الرقم | الاسم | العمر | العنوان | الراتب
 ----+-------+-----+--------------+--------
   1 | Paul | 32 | California | 20000
   2 | Allen | 25 | Texas | 15000
   3 | Teddy | 23 | Norway | 20000
   4 | Mark | 25 | Rich-Mond | 65000
   5 | David | 27 | Texas | 85000
   6 | Kim | 22 | South-Hall | 45000
   7 | James | 24 | Houston | 10000
   8 | Paul | 24 | Houston | 20000
   9 | James | 44 | Norway | 5000
  10 | James | 45 | Texas | 5000
(10 صفوف)

الآن، قم بتجميع البيانات بناءً على قيمة حقل NAME لمعرفة مجموع رواتب كل عميل:

w3codeboxdb=# SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME;

النتيجة التي تحصل عليها في هذه الحالة كالتالي:

الاسم | المجموع
-------+-------
 Allen | 15000
 David | 85000
 James | 20000
 Kim | 45000
 Mark | 65000
 Paul | 40000
 Teddy | 20000
(7 صفوف)

في هذا المثال، يتم استخدام جملة ORDER BY مع جملة GROUP BY معًا:

w3codeboxdb=# SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME DESC;

الحصول على النتائج التالية:

الاسم | المجموع
-------+-------
 Teddy | 20000
 Paul | 40000
 Mark | 65000
 Kim | 45000
 James | 20000
 David | 85000
 Allen | 15000
(7 صفوف)