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

دليل أساسي PostgreSQL

دليل متقدم PostgreSQL

واجهة PostgreSQL

قسمة HAVING PostgreSQL

HAVING CLAUSE ALLOWS US TO FILTER THE DATA OF THE GROUPED DATA.

WHERE CLAUSE SETS CONDITIONS ON THE SELECTED COLUMNS, WHILE THE HAVING CLAUSE SETS CONDITIONS ON THE GROUPS CREATED BY THE GROUP BY CLAUSE.

النحو

BELOW IS THE POSITION OF THE HAVING CLAUSE IN THE SELECT QUERY:

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

مUST BE PLACED AFTER THE GROUP BY CLAUSE AND BEFORE THE ORDER BY CLAUSE, BELOW IS THE BASIC SYNTAX OF THE HAVING CLAUSE IN THE SELECT STATEMENT:

SELECT column1, column2
FROM table1, table2
WHERE [conditions]
GROUP BY column1, column2
HAVING [conditions]
ORDER BY column1, column2

مثال على الإنترنت

إنشاء جدول 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، و name(الاسم) الحقول التي تحتوي على عدد أقل من 2 بيانات:

SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) < 2;

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

  الاسم
 -------
  Teddy
  Paul
  Mark
  David
  Allen
  Kim
  James
(7 صفوف)

نضيف بعض البيانات إلى الجدول:

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 كالتالي:

 id | الاسم | العمر | العنوان | الراتب
 ----+-------+-----+--------------+--------
   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 صفوف)

في المثال التالي سيتم العثور على البيانات المجمعة بناءً على قيمة حقل الاسم، وعدد الاسماء أكبر من 1:

w3codeboxdb-# SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) > 1;

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

 الاسم
-------
 Paul
 James
(2 صفوف)