SQL GROUP BY Statement

ஒரே மதிப்புகளைக் கொண்ட வரிசைகளை சுருக்க வரிசைகளாக குழுவாக்க GROUP BY பற்றி அறிந்து கொள்ளுங்கள்

GROUP BY Statement என்றால் என்ன?

GROUP BY statement ஒரே மதிப்புகளைக் கொண்ட வரிசைகளை சுருக்க வரிசைகளாக குழுவாக்குகிறது, "ஒவ்வொரு நாட்டிலும் உள்ள வாடிக்கையாளர்களின் எண்ணிக்கையைக் கண்டறிய" போன்றவை.

GROUP BY statement பெரும்பாலும் aggregate functions (COUNT(), MAX(), MIN(), SUM(), AVG()) உடன் பயன்படுத்தப்படுகிறது, முடிவு-தொகுப்பை ஒன்று அல்லது அதற்கு மேற்பட்ட நெடுவரிசைகளால் குழுவாக்க.

GROUP BY தொடரியல்

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);

ஆர்ப்பாட்ட தரவுத்தளம்

Northwind மாதிரி தரவுத்தளத்தில் "Customers" அட்டவணையில் இருந்து ஒரு தேர்வு கீழே உள்ளது:

Customers அட்டவணை

+------------+--------------------------------+----------------+-------------------+----------+------------+---------+
| CustomerID | CustomerName                   | ContactName    | Address           | City     | PostalCode | Country |
+------------+--------------------------------+----------------+-------------------+----------+------------+---------+
| 1          | Alfreds Futterkiste            | Maria Anders   | Obere Str. 57     | Berlin   | 12209      | Germany |
| 2          | Ana Trujillo Emparedados...    | Ana Trujillo   | Avda. Constitución| México   | 05021      | Mexico  |
| 3          | Antonio Moreno Taquería        | Antonio Moreno | Mataderos 2312    | México   | 05023      | Mexico  |
| 4          | Around the Horn                | Thomas Hardy   | 120 Hanover Sq.   | London   | WA1 1DP    | UK      |
| 5          | Berglunds snabbköp             | Christina Berg | Berguvsvägen 8    | Luleå    | S-958 22   | Sweden  |
+------------+--------------------------------+----------------+-------------------+----------+------------+---------+

SQL GROUP BY உதாரணங்கள்

பின்வரும் SQL statement ஒவ்வொரு நாட்டிலும் உள்ள வாடிக்கையாளர்களின் எண்ணிக்கையை பட்டியலிடுகிறது:

உதாரணம்

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

முடிவு

COUNT(CustomerID)
Country
1
Germany
2
Mexico
1
UK
1
Sweden

பின்வரும் SQL statement ஒவ்வொரு நாட்டிலும் உள்ள வாடிக்கையாளர்களின் எண்ணிக்கையை பட்டியலிடுகிறது, உயர் முதல் குறைந்த வரிசையில் வரிசைப்படுத்தப்பட்டது:

உதாரணம்

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;

முடிவு

COUNT(CustomerID)
Country
2
Mexico
1
Germany
1
UK
1
Sweden

கூடுதல் ஆர்ப்பாட்ட தரவுத்தளம்

Northwind மாதிரி தரவுத்தளத்தில் "Orders" அட்டவணையில் இருந்து ஒரு தேர்வு:

Orders அட்டவணை

+---------+------------+-----------+------------+------------+
| OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
+---------+------------+-----------+------------+------------+
| 10248   | 90         | 5         | 1996-07-04 | 3         |
| 10249   | 81         | 6         | 1996-07-05 | 1         |
| 10250   | 34         | 4         | 1996-07-08 | 2         |
+---------+------------+-----------+------------+------------+

மற்றும் "Shippers" அட்டவணையில் இருந்து ஒரு தேர்வு:

Shippers அட்டவணை

+-----------+-------------------+
| ShipperID | ShipperName       |
+-----------+-------------------+
| 1         | Speedy Express    |
| 2         | United Package    |
| 3         | Federal Shipping  |
+-----------+-------------------+

JOIN உடன் GROUP BY உதாரணம்

பின்வரும் SQL statement ஒவ்வொரு ஷிப்பரும் அனுப்பிய ஆர்டர்களின் எண்ணிக்கையை பட்டியலிடுகிறது:

உதாரணம்

SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders 
FROM Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;

முடிவு

ShipperName
NumberOfOrders
Speedy Express
1
United Package
1
Federal Shipping
1

GROUP BY காட்சிப் பிரதிநிதித்துவம்

அசல் தரவு

Alfreds Futterkiste - Germany
Ana Trujillo - Mexico
Antonio Moreno - Mexico
Around the Horn - UK
Berglunds - Sweden
GROUP BY Country

குழுவாக்கப்பட்ட தரவு

Germany
1 வாடிக்கையாளர்
Mexico
2 வாடிக்கையாளர்கள்
UK
1 வாடிக்கையாளர்
Sweden
1 வாடிக்கையாளர்

கவனிக்க: GROUP BY ஒரே நாட்டு மதிப்புகளைக் கொண்ட அனைத்து வரிசைகளையும் குழுவாக்கி, ஒவ்வொரு குழுவிற்கும் aggregate functions-ஐப் பயன்படுத்துகிறது.

Aggregate Functions

COUNT()

வரிசைகளின் எண்ணிக்கையை தரும்

SELECT COUNT(*)
FROM Customers
GROUP BY Country;

MAX()

அதிகபட்ச மதிப்பை தரும்

SELECT MAX(Price)
FROM Products
GROUP BY CategoryID;

MIN()

குறைந்தபட்ச மதிப்பை தரும்

SELECT MIN(Price)
FROM Products
GROUP BY CategoryID;

SUM()

மொத்த தொகையை தரும்

SELECT SUM(Quantity)
FROM OrderDetails
GROUP BY OrderID;

AVG()

சராசரி மதிப்பை தரும்

SELECT AVG(Price)
FROM Products
GROUP BY CategoryID;

பல நெடுவரிசை GROUP BY

நீங்கள் ஒன்றுக்கு மேற்பட்ட நெடுவரிசைகளால் குழுவாக்கலாம்:

உதாரணம்

SELECT Country, City, COUNT(CustomerID)
FROM Customers
GROUP BY Country, City;

முடிவு

Country
City
COUNT(CustomerID)
Germany
Berlin
1
Mexico
México D.F.
2
UK
London
1
Sweden
Luleå
1

குறிப்பு:

பல நெடுவரிசைகளால் குழுவாக்கும் போது, ஒவ்வொரு தனித்த நெடுவரிசை மதிப்புகளின் கலவைக்கும் தனி குழுக்கள் உருவாக்கப்படும்.

பயிற்சி

GROUP BY statement-ல் பொதுவாக பயன்படுத்தப்படும் aggregate functions எவை?

COUNT(), MAX(), MIN(), SUM(), AVG()
✓ சரி! இந்த aggregate functions GROUP BY-ல் பொதுவாக பயன்படுத்தப்படுகின்றன, குழுவாக்கப்பட்ட தரவில் கணக்கீடுகளைச் செய்ய
SELECT(), INSERT(), UPDATE(), DELETE()
✗ தவறு! இவை aggregate functions அல்ல, இவை SQL commands
JOIN(), UNION(), INTERSECT(), EXCEPT()
✗ தவறு! இவை aggregate functions அல்ல, இவை SQL set operators
HAVING(), WHERE(), ORDER BY(), DISTINCT()
✗ தவறு! இவை aggregate functions அல்ல, இவை SQL clauses