----- Original Message -----
From: "Emiliano Moscato" <moski...@gmail.com>
To: <pgsql-es-ayuda@postgresql.org>
Sent: Wednesday, March 04, 2009 2:31 PM
Subject: [pgsql-es-ayuda] Usando GROUP BY
Hola a todos!
Cada tanto me encuentro con el mismo tipo de problema haciendo queries
en postgres. Supongamos que tenemos el ejemplo del tutorial de
Postgres (http://www.postgresql.org/docs/8.1/static/tutorial-agg.html):
SELECT city, max(temp_lo)
FROM weather
GROUP BY city;
city | max
---------------+-----
Hayward | 37
San Francisco | 46
(2 rows)
pero además querría saber en que fecha ocurrió dicha temperatura. Cuál
sería la manera "más correcta" de hacerlo?
Lo más sencillo sería utilizar un select distinct on.
http://www.postgresql.org/docs/8.3/static/queries-select-lists.html
Sería algo así como:
SELECT DISTINCT ON (city) city, temp_lo, date
FROM weather
ORDER BY temp_lo
De seguro esta es la forma más sencilla de hacerlo, tocaría evaluar si es
más o menos óptimo que utilizar joins con la misma tabla.
Atentamente,
RAUL DUQUE
Bogotá, Colombia
En mis tiempos de Mysql hacía algo del estilo, haciendo uso de los
abusos del standard por parte de MYSQL:
SELECT city, max(temp_lo), date
FROM weather
GROUP BY city;
pero en Postgres,si hago esto, me reclama que date no debe estar en el
group by. Claramente, esto no sería útil, dado que al ponerlo en el
group by, me desagrega la maxima temperatura de la ciudad por dias.
Cuál sería la manera correcta de hacer este query?
Gracias por adelantado, saludos
Moski
--
TIP 4: No hagas 'kill -9' a postmaster