2017-12-02 8 views
0

私はpostgresqlでこのクエリを持っています。 1つはカウンタと呼ばれ、もう1つはforn_primarioと呼ばれます。 しかし、その代わりに、私はこのエラーを取得:「列 『forn_primario』 GROUP BY句に現れなければならないか、集約関数で使用される」"カラムはGROUP BY句に現われなければならないか、集計関数で使わなければなりません"

Select MAX(contador) as counter, forn_primario 
From(
Select COUNT(DISTINCT categoria) as contador, forn_primario 
From produto 
Group by forn_primario)t 

また、このクエリ

Select COUNT(DISTINCT categoria) as contador, forn_primario 
From produto 
Group by forn_primario 

後、私はこのテーブルを取得

contador | forn_primario 
----------+--------------- 
     1 | 103246782 
     17 | 113056729 
     2 | 120456781 
     3 | 123456719 
     1 | 133956139 
     2 | 143856248 
     2 | 153756357 
     1 | 163656466 
     2 | 173516575 
     1 | 183426684 
     1 | 193336793 

私は、メインクエリは、このテーブルを持っている必要があります後:

counter | forn_primario 
----------+--------------- 
     17 | 113056729 
+0

答えは、エラーメッセージです。 – Ben

答えて

0

私はあなたがこれをしたいと思う:

Select COUNT(DISTINCT categoria) as contador, forn_primario 
From produto 
Group by forn_primario 
Order by contador DESC 
Limit 1; 
+0

2つのforn_primarioが同じカウントを持つ場合はどうなりますか? dense_rank() –

+0

を使用する必要がありますが、同じケースでは1つ以上のforn_primがある場合は、 –

+0

@TiagoTaveiraのため、この場合のみ動作します。 。 。その場合、問題は 'rank()'/'dense_rank()'で解決できます。私は 'group by 'を持たない集約クエリが常にちょうど1行を返すので、これについて言及しなかった。 –

-1

クエリ

SELECT COUNT(DISTINCT(categoria)) as Contador, forn_primario FROM produto GROUP BY forn_primario ORDER BY Contador DESC LIMIT 1 
+0

同じカウンタを持つ複数のforn_primarioがある場合は動作しません –

関連する問題