Grup sonuçlarını kısıtlama

Oracle SQL'ye Giriş

Hadrien Lacroix

Content Developer

Örneğimize geri dönelim

SELECT Composer, AVG(Milliseconds)
FROM Track
WHERE UnitPrice = 0.99
GROUP BY Composer
| Composer        | AVG(Milliseconds) |
|-----------------|-------------------|
| Antonio Vivaldi | 199,086.0         |
| Pearl Jam       | 94,197.0          |
| Jimmy Page      | 474,888.3         |
| Carlos Santana  | 499,234.3         |
| ...             | ...               |

Gruplamadan sonra filtreleme nasıl olur?

Oracle SQL'ye Giriş

WHERE’ın sınırları

  • WHERE grupları filtrelemek için kullanılamaz
    • Grup fonksiyonları WHERE içinde kullanılamaz
Oracle SQL'ye Giriş

WHERE sınırları örneği

SELECT Composer, AVG(Milliseconds)
FROM Track
GROUP BY Composer
WHERE AVG(Milliseconds) > 200000
syntax error at or near "WHERE"
LINE 4: WHERE AVG(Milliseconds) > 200000
        ^
Oracle SQL'ye Giriş

HAVING

SELECT Composer, AVG(Milliseconds)
FROM Track
GROUP BY Composer
HAVING AVG(Milliseconds) > 200000
| composer    | avg    |
|-------------|--------|
| George Duke | 274155 |
| Miles Davis | 391146 |
| R. Carless  | 251585 |
| ...         | ...    |
Oracle SQL'ye Giriş

HAVING ile grup sonuçlarını kısıtlama

Having akış şeması

Oracle SQL'ye Giriş

HAVING

SELECT Composer, MAX(Milliseconds)
FROM Track
GROUP BY Composer
HAVING MAX(Milliseconds) > 200000
| composer    | max    |
|-------------|--------|
| George Duke | 274155 |
| Miles Davis | 907520 |
| R. Carless  | 251585 |
| ...         | ...    |

Oracle SQL'ye Giriş

Başka bir örnek

SELECT Composer, SUM(UnitPrice)
FROM Track
WHERE GenreId = 1
GROUP BY Composer
HAVING COUNT(*) > 4
| composer      | sum  |
|---------------|------|
| AC/DC         | 7.92 |
| Chris Cornell | 9.90 |
| Eddie Vedder  | 8.91 |
| ...           | ...  |
Oracle SQL'ye Giriş

Yönergeler

  • SELECT ve HAVING içinde farklı grup fonksiyonları kullanılabilir

  • HAVING daima bir grup fonksiyonu içerir

İşlem sırası:

  1. Satırlar WHERE ve GROUP BY ile filtrelenir
  2. Gruplara grup fonksiyonu uygulanır
  3. Gruplar HAVING ile filtrelenir ve yazdırılır
Oracle SQL'ye Giriş

Hadi pratik yapalım!

Oracle SQL'ye Giriş

Preparing Video For Download...