SQL - Gruplama Ölçütü
SQL GROUP BYyan tümcesi, aynı verileri gruplar halinde düzenlemek için SELECT deyimiyle birlikte kullanılır. Bu GROUP BY yan tümcesi, bir SELECT deyimindeki WHERE yan tümcesini izler ve ORDER BY yan tümcesinden önce gelir.
Sözdizimi
GROUP BY yan tümcesinin temel sözdizimi aşağıdaki kod bloğunda gösterilmektedir. GROUP BY yan tümcesi, WHERE yan tümcesindeki koşulları takip etmeli ve kullanılıyorsa ORDER BY yan tümcesinden önce gelmelidir.
SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2
ORDER BY column1, column2
Misal
MÜŞTERİLER tablosunun aşağıdaki kayıtlara sahip olduğunu düşünün -
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Her bir müşterideki maaşın toplam tutarını bilmek istiyorsanız, GROUP BY sorgusu aşağıdaki gibi olacaktır.
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
Bu, aşağıdaki sonucu verecektir -
+----------+-------------+
| NAME | SUM(SALARY) |
+----------+-------------+
| Chaitali | 6500.00 |
| Hardik | 8500.00 |
| kaushik | 2000.00 |
| Khilan | 1500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 2000.00 |
+----------+-------------+
Şimdi, CUSTOMERS tablosunun, yinelenen adlara sahip aşağıdaki kayıtlara sahip olduğu bir tabloya bakalım -
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Şimdi yine, her müşterinin toplam maaş miktarını bilmek istiyorsanız, GROUP BY sorgusu aşağıdaki gibi olacaktır -
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
Bu, aşağıdaki sonucu verecektir -
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+