Eu tenho uma tabela como esta:
Column | Type | Modifiers
---------+------+-----------
country | text |
food_id | int |
eaten | date |
E para cada país, eu quero pegar a comida que se come com mais freqüência. O melhor que posso pensar (estou usando 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;
Nesse último comunicado, o GROUP BY e max () são necessários para quebrar laços, onde dois alimentos diferentes têm a mesma contagem.
Este parece ser um monte de trabalho para algo conceitualmente simples. Existe uma maneira para a frente mais direto para fazê-lo?













