Oracle SQL komut dosyasında sorun yaşıyorum. Çoğu yayını olan tüm yazarları (oturum açma) seçmem gerekiyor. Aynı sayıda yayına sahip daha fazla giriş varsa, hepsini seçmem gerekiyor.SQL ORACLE - Çoğu yayını (çoğu satırı) kullanarak yazarın seçilmesi MAX()
SELECT P.LOGIN, COUNT(*)
FROM PISE P
GROUP BY P.LOGIN, HAVING COUNT(*) >= MAX(PUBLICATIONS)
(
SELECT COUNT(*) AS PUBLICATIONS
FROM PISE P
GROUP BY P.LOGIN
);
ORA-00933 sonuçlanan: SQL komutu düzgün
sona eren değil list of publications looks like this:ben .. şu ana kadar böyle bir şey yapıyor denedim MAX() işlevini kullanmak ihtiyaç
veya
SELECT P.LOGIN, COUNT(*) as PUBLICATIONS
FROM PISE P
GROUP BY P.LOGIN HAVING PUBLICATIONS >= MAX(PUBLICATIONS);
res "YAYIN": ORA-00904 içinde ulting geçersiz tanımlayıcı
veya
SELECT P.LOGIN, COUNT(*)
FROM PISE P
WHERE COUNT(*) IN (
SELECT MAX(COUNT(*))
FROM PISE
);
ORA-00934 sonuçlanan: grup buradaki görevi izin verilmez. This is the result I am looking for
(Jmeno ve Prijmeni sütunu olmadan). (Sürümleri 11 ve üzeri mevcuttur) "hükmündeki ile"
Neden YAYINLAR> = MAX (YAYINLAR) değil = (eşittir)? Diğer denemede neden COUNT (*) IN (SELECT MAX ...) ve "IN" yerine = (eşit)? Her iki durumda da = en mantıklıdır. AYRICA: Yazarların adı ve soyadı orijinal tabloda yer almıyor, çıktıda nasıl görünmelerini istersiniz? Muhtemelen bir katılmaya ihtiyacınız olacaktır (eğer ilk ve son isimler olması gerektiği gibi başka bir tabloda ise), ancak bunun hakkında hiçbir bilgi vermediniz. – mathguy
Evet, değiştirmek> = hiç farketmez. Orada olduğum şeyin başlangıcında, ama bir şekilde onu çözmeye çalışırken, aklıma gelen her şeyi denedim. changin IN to = aynı sonuçla bitiyor. DÜZENLEME: ad ve soyadı farklı tabloda yer alır, daha sonra ekleyeceğim, ama çözülmem gereken şeyi değil, bu yüzden ihmal ettim. Başka bir deyişle, problemimi sorunun köküne basitleştirmeye çalıştım. – sKyTzi
Doğru - Sorguları düzeltebileceğini önermiyordum (her şeyden önce, hem> = hem de "IN" mükemmel bir şekilde meşrudur - sadece verimsiz). Sorgunuz başarısız çünkü ilk sorgudan sonra hemen bir alt sorguyu başlatıyorsunuz. Muhtemelen bir WHERE maddesinin olması gerekiyordu, ancak WHERE kelimesi mevcut değil. İkinci sorgu başarısız çünkü diğer ad (örneğin SELECT yan tümce) eklenir (SELECT yan tümce) yalnızca GROUP BY yan tümce, böylece GROUP BY düzeyinde hiçbir tanımlayıcı "PUBLICATIONS" (henüz) yoktur. – mathguy