2016-04-07 33 views
0

gelen COUNT a.id başvurular bir (id)Postgres tarafından dizilerini bulmak ve ben iki tablo</p> <p><strong>tablo</strong><br> id <br> başlık <br> yıl</p> <hr> <p><strong>tablo b</strong><br> id <br> sahip diğer tablodan

En çok (yıl) tüm tupller için başlık, yıl ve count() almak istiyorum. Bunu işe alamıyorum.

Ayrı yapabilirim, ancak bir WHERE yan tümcesi eklediğinde başarısız oluyor.

select title, year, count(*) 
from a inner join b on a.id = b.a_id 
group by title, year 

Bunun gibi bir şey bana liste yılı ve sayım listesi verirdi. Bir WHERE yan tümcesini eklemeyi denerseniz, burada hiçbir işlem göremiyorum. Neredeyse nedenini anladığımı düşünüyorum ama çözmeyi başaramıyorum.

Umarım birileri beni anlar ve yardımcı olabilir!

+0

yerine katılmak dış deneyin daha okunabilir. Benim önerim, "b" nin kayda en yüksek bir yıl olan rekoruna karşılık gelen bir kayıt olmamasıdır. –

+0

Belki de tuple kaybediyordum ve dış birleşimleri denedim ve geri dönen her tuple için 1 sayımı verir diye düşündüm. – CIsHard

cevap

0

buna ne dersiniz?

WITH a_max_years AS (
    SELECT id 
    FROM a 
    WHERE year = (SELECT max(year) FROM a) 
) 
SELECT a.title, a.year, count(1) 
    FROM a 
    INNER JOIN b ON b.a_id = a.id 
    INNER JOIN a_max_years.id = a.id 
    GROUP BY b.a_id; 

ya:

WITH b_counts AS (
    SELECT a_id, count(1) as cnt 
    FROM b 
    GROUP BY a_id 
) 
SELECT a.title, a.year, b_counts.cnt 
    FROM a 
    INNER JOIN b_counts ON b_counts.a_id = a.id 
    WHERE a.year = (SELECT max(year) FROM a); 

da INNER JOIN (SELECT ...) a_max_years olarak yazabilirim ama WITH

+0

Son Sorgunuzla, WHERE yan tümcesiyle sıfır boşluklar elde ediyorum. WHERE olmadan başlık, yıl ve doğru sayım ile tam bir liste olsun. Yine de giriş için teşekkürler! Belki de benim burada yanlış birşeyler yapıyorum. – CIsHard

İlgili konular