Ich habe eine Tabelle wie diese:
Spalte | Typ | Modifikatoren
---------+------+-----------
country | text |
food_id | int |
eaten | datum |
Und für jedes Land möchte ich das Essen bekommen, das am häufigsten gegessen wird. Das Beste, was mir einfällt (ich benutze postgres), ist:
CREATE TEMP TABELLE zählt ALS
SELECT country, food_id, count(*) as count FROM munch GRUPPIEREN NACH country, food_id;
CREATE TEMP TABELLE max_counts ALS
SELECT country, max(count) as max_count FROM counts GRUPPIEREN NACH country;
SELECT country, max(food_id) FROM counts
WO (country, count) IN (SELECT * FROM max_counts) GRUPPIEREN NACH country;
In dieser letzten Anweisung sind die GRUPPIEREN NACH und max() erforderlich, um Unentschieden zu brechen, wo zwei verschiedene Lebensmittel die gleiche Anzahl haben.
Dies scheint viel Arbeit für etwas konzeptionell Einfaches zu sein. Gibt es einen einfacheren Weg, um dies zu tun?