ORA-00979: not a GROUP BY expression
SELECT listesinde ne GROUP BY’da ne de bir toplama fonksiyonunun içinde olan bir kolon var. Kolonu GROUP BY’a ekleyin ya da MAX gibi bir toplama fonksiyonuna alın.
ORA-00979 ne demek?
GROUP BY sorgusu grup başına bir satır döndürür; bu yüzden seçilen her kolonun grup başına tek bir değeri olmalıdır. GROUP BY listesindeki kolonların ve SUM, COUNT gibi toplama fonksiyonlarının vardır. Diğerlerinin olası pek çok değeri vardır ve Oracle birini seçmez. Toplama fonksiyonu olup GROUP BY hiç yoksa hata ORA-00937’dir.
ORA-00979 neden olur?
GROUP BY’da bulunmayan seçili bir kolon.- Gruplanmamış bir kolonda
ORDER BY. - SELECT’teki ifadenin GROUP BY’dakinden farklı olması:
TRUNC(d)vedgibi. - 23ai öncesi sürümlerde
GROUP BY’da SELECT takma adı kullanmak.
ORA-00979 nasıl çözülür?
- Toplanmayan her kolonu
GROUP BY’a ekleyin. - Ya da toplayın: herhangi bir değer yeterliyse
MAX(kolon). - SELECT ve GROUP BY’da birebir aynı ifadeyi yazın.
- Toplamların yanında ayrıntı gerekiyorsa analitik fonksiyon kullanın:
SUM(x) OVER (PARTITION BY y).
ORA-00979 örneği
Seçilen her kolon gruplanmış ya da toplanmış olmalı:
-- ORA-00979: not a GROUP BY expression
SELECT city, name, COUNT(*) FROM customers GROUP BY city;
-- Çalışır
SELECT city, COUNT(*) FROM customers GROUP BY city;
SQLlightspeed’de
Bir ifade hata verdiğinde SQLlightspeed’in hata paneli, hata kodunu sade bir Türkçe açıklama ve ne yapmanız gerektiğine dair bir öneriyle; Oracle’ın kendi mesajı ve Oracle dokümantasyonuna bağlantıyla birlikte gösterir — bu hata ve sık görülen onlarca başka hata için.
İlgili hatalar
ORA-00918ORA-00904ORA-00936 Tüm Oracle hataları →
Oracle dokümantasyonu: ORA-00979. Oracle, Oracle Corporation’ın tescilli ticari markasıdır. SQLlightspeed’in Oracle ile bir bağlantısı yoktur.