English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在 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 صفوف)