2017-08-13 54 views
7

numaralı maddeye göre gruplandırmayı gerektiriyor? Birisi bana bu sorgunun neden Oracle'da GROUP BY cümlesi gerektirdiğini açıklayabilir mi, MSSQL, MySQL, Postgresql? Bunu değiştirmek ve buBu sorguyu neden Oracle

select count(*)/(select count(*) from dual)from dual 
group by null 

o zaman Oracle için gayet benzeri ile kukla grubu ilave

select count(*)/(select count(*) from dual)from dual 

Oracle

"[Error] Execution (1: 27): ORA-00937: not a single-group group function" 

şikayet ediyor. Oracle neden bu grubu gerektirir?

+0

Lütfen gerçek sorguyu sağlayabilir misiniz, örneğiniz herhangi bir anlam ifade etmemektedir. –

+0

Bunu olabildiğince soyut yapmak için verdim ama tabii ki burada Northwind DB'den bir tane var. select select (BirimFiyatı * Miktar)/(Emirleri seçin) (Siparişlerin seçilmesi) OrderDetails – olek

+0

@WernfriedDomscheit - Eğer herhangi bir gerçek tablo ile "ikili" değiştirilirse, sonuç aynı olacaktır –

cevap

0

MySQL, ANSI SQL'de geçerli olmayan bazı sözdizimine sahiptir. temel olarak, burada bir toplama işlevi olan bir count(*) var. Yalnız, bu bir group by gerektirmez, ancak satırınıza bağlı olabilir select count(*) eklerseniz - buradaki durum böyle değil, ancak bir iç içe birleştirme yapabilirsiniz - o zaman ikinci sabit değildir ve bize group by .

0

olarak bildiğim kadarıyla, İlk sorgusu:

select count(*)/(select count(*) from dual)from dual 

Sql = ikinci sütunu olarak bir sütun olarak Kont () ve (dual select count ()) anlayacaktır> Sen gerekir grup ikinci sütuna göre. Örneğin

: Aynı hatayı atar

select count(*), (select count(1) from dual)from dual 

. Ama ikinci sütuna göre gruplandırsanız, bu doğru olacaktır. Örnek

select count(*), (select count(1) from dual)from dual 
group by 1