Yanıtlar:
ORDER BY, ürünlerin iade edilme sırasını değiştirir.
GROUP BY, gruplanmamış sütunlarda (SUM, COUNT, AVG vb. Gibi) toplama işlevlerini gerçekleştirmenize olanak tanıyan belirtilen sütunlara göre kayıtları toplar.
ORDER BY, ürünlerin iade edilme sırasını değiştirir.
GROUP BY, gruplanmamış sütunlarda (SUM, COUNT, AVG vb. Gibi) toplama işlevlerini gerçekleştirmenize olanak tanıyan belirtilen sütunlara göre kayıtları toplar.
TABLE:
ID NAME
1 Peter
2 John
3 Greg
4 Peter
SELECT *
FROM TABLE
ORDER BY NAME
=
3 Greg
2 John
1 Peter
4 Peter
SELECT Count(ID), NAME
FROM TABLE
GROUP BY NAME
=
1 Greg
1 John
2 Peter
SELECT NAME
FROM TABLE
GROUP BY NAME
HAVING Count(ID) > 1
=
Peter
ageEngin farklı yaşlara sahip sütun varsa ve sorgu İSİME GÖRE TABLO GRUBUNDAN YAŞ SEÇİNSE?
ORDER BY: Verileri artan veya azalan düzende sıralayın.
MÜŞTERİLER tablosunu 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 |
+----+----------+-----+-----------+----------+
Aşağıda, sonucu artan sırada NAME göre sıralayacak bir örnek verilmiştir:
SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME;
Bu, aşağıdaki sonucu verecektir:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
GROUP BY: aynı verileri gruplar halinde düzenleyin.
Şimdi, CUSTOMERS tablosunda yinelenen adlara sahip aşağıdaki kayıtlar bulunur:
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
aynı isimleri tek isim altında gruplamak istiyorsanız, GROUP BY sorgusu aşağıdaki gibi olacaktır:
SQL> SELECT * FROM CUSTOMERS
GROUP BY NAME;
Bu, aşağıdaki sonucu üretir: (aynı adlar için sonuncuyu seçer ve son olarak sütunu artan sırada sıralar)
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
+----+----------+-----+-----------+----------+
sum, avg vb. gibi SQL işlevleri olmadan hiçbir işe yaramayacağı sonucuna varmışsınızdır.
GROUP BY'ın doğru kullanımını anlamak için bu tanımı gözden geçirin:
GROUP BY yan tümcesi, aynı satırları tek / farklı bir grup halinde özetleyerek bir sorgu tarafından döndürülen satırlar üzerinde çalışır ve SEÇ listesinde COUNT (), SUM gibi uygun Aggregate işlevini kullanarak her grup için özetle tek bir satır döndürür. (), MIN (), MAX (), AVG () vb.
Şimdi, her bir müşterinin (isim) toplam maaş 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 üretecektir: (aynı isimlerin maaşlarının toplamı ve aynı isimleri kaldırdıktan sonra İSİM sütununu sıralayın)
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
Aradaki fark tam olarak adın ima ettiği şeydir: bir grup, bir gruplama işlemi gerçekleştirir ve sıralamaya göre bir sıra.
Bunu yaparsanız SELECT * FROM Customers ORDER BY Name, müşterilerin adına göre sıralanmış sonuç listesini alırsınız.
Eğer yaparsanız SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive, aktif ve pasif müşteri sayısı elde edersiniz. Grup, belirttiğiniz alana göre sonuçları topladı.
Tamamen farklı anlamlara sahipler ve gerçekten hiçbir ilgileri yok.
TARAFINDAN SİPARİŞ , sonuç kümesini farklı kriterlere göre sıralamanıza olanak tanır, örneğin ilk önce az'dan ada göre sıralayın, ardından fiyata göre en yüksekten en düşüğe doğru sıralayın.
(Ada göre sipariş, fiyat DESC)
GROUP BY , sonuç kümenizi almanıza, mantıksal gruplara ayırmanıza ve ardından bu gruplar üzerinde toplu sorgular çalıştırmanıza olanak tanır. Örneğin, tüm çalışanları seçebilir, onları işyeri konumlarına göre gruplayabilir ve her işyeri konumundaki tüm çalışanların ortalama maaşını hesaplayabilirsiniz.
Basittir, ORDER BYverileri ve GROUP BYgrupları sıralar veya verileri birleştirir.
ORDER BY sonuç kümesini belirtilen alana göre, varsayılan olarak artan sırada sıralar.
Bir sorguyu tetiklediğinizi varsayalım ORDER BY (student_roll_number), bu size sonucu öğrencinin rulo sayılarının artan sırasına göre gösterecektir. Burada student_roll_numbergiriş birden fazla olabilir.
Bu GROUP BYdurumda, bunu toplama fonksiyonlarıyla kullanırız ve verileri toplama fonksiyonuna göre gruplandırır ve sonucu alırız. Burada, SUM (marks)sorgumuzla birlikte GROUP BY (student_first_name)varsa, her gruba ait öğrencilerin puanlarının toplamını gösterecektir (burada bir grubun tüm üyeleri aynı ada sahip olacaktır).
GROUP BY, genellikle satırları toplarken (örneğin bazı alanlar için aynı değerlere sahip bir dizi satır için toplamları, ortalamaları, vb. Hesaplarken) bir seçimdeki satırları gruplamak için kullanılır.
ORDER BY, bir select ifadesinden elde edilen satırları sıralamak için kullanılır.
Orada bazı iyi örnekler. Tıpkı iyi açık örnekler veren ve kendi SQL'inizi çalıştırmanıza izin veren webcheatsheet'ten kendiminkini eklemek gibi.
ORDER BYartan veya azalan sırada bir alanı gösterir. İken GROUP BYgösterileri aynı FIELDNAMES, id en vb sadece bir çıktıda.
Her GROUP BYzaman gerekli olmadığına dikkat edilmelidir (en azından PostgreSQL'de ve muhtemelen diğer SQL varyantlarında) ORDER BYbir liste ile kullanabilirsiniz ve yine de ASCveya sütun DESC başına kullanabilirsiniz ...
SELECT name_first, name_last, dob
FROM those_guys
ORDER BY name_last ASC, name_first ASC, dob DESC;