2017-05-19 2 views
0

私はフォーラムを通して探していますが、ほとんどの回答には LIMITが含まれています。例:変数の中で最大値を持つ変数の数がわからず、最大値がわからない場合。しかし、あなたは最高値LIMITなしの列で最も頻繁に使用される値を返します

持つすべての変数を表示するこれまでのところ私のコードは

SELECT b.column1, b.column2, count(a.column1) 
FROM alphabet a 
LEFT JOIN book b ON a.column1= b.column1 
GROUP BY a.column1 
ORDER BY count(a.column1) desc; 

が制限値を使用せずに、最も頻度の高い値を返す方法はありますか?

+0

GROUP BYが無効です。一般的なGROUP BYルールでは、「GROUP BY句が指定されている場合、SELECTリストの各列参照は、グループ化列を識別するか、または集合関数の引数でなければなりません。 – jarlh

+0

どのdbmsを使用していますか? – jarlh

+0

@jarlh SQLiteStudio –

答えて

0

このような問題を解決するための一般的なパターンは、サブクエリで選択された最大値と値(集約されているかどうか)を比較することです。たとえば、次のクエリが役に立ちます。

SELECT b.column1, count(a.column1) 
FROM alphabet a 
LEFT JOIN book b ON a.column1= b.column1 
GROUP BY b.column1 
having count(a.column1) = (select max(cnt) from (
    select count(a2.column1) as cnt 
    from alphabet a2 
    group by a2.column1)) 
+0

"カウントがある"セクションにエラーがありましたが、私は考えを得ます –

+0

残念ながら、sqliteはサブクエリで 'max'をサポートしていませんし、' ALL '。しかし 'select max(cnt)from(select count(*)as cnt ...)'が動作するはずです。それに応じて答えを適応させた。 –

関連する問題