次のようなテーブルがあります。
Column | Type | Modifiers
---------+------+-----------
country | text |
food_id | int |
eaten | date |
そして、国ごとに、最も頻繁に食べられる食べ物を取得したいと考えています。私が考えることができる最高のもの(私はpostgresを使用しています)は次のとおりです。
CREATE TEMP TABLE counts AS
SELECT country, food_id, count(*) as count FROM munch GROUP BY country, food_id;
CREATE TEMP TABLE max_counts AS
SELECT country, max(count) as max_count FROM counts GROUP BY country;
SELECT country, max(food_id) FROM counts
WHERE (country, count) IN (SELECT * from max_counts) GROUP BY country;
最後のステートメントでは、GROUP BY と max() は、2 つの異なる食品のカウントが同じである同点を解消するために必要です。
これは、概念的に単純なものの場合、多くの作業のように思えます。それを行うためのより簡単な方法はありますか?