Re: Usando GROUP BY

From: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
To: Emiliano Moscato <moski666(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Usando GROUP BY
Date: 2009-03-04 21:03:29
Message-ID: 3073cc9b0903041303q1fc0bac3yb4e642d60c2651f0@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2009/3/4 Emiliano Moscato <moski666(at)gmail(dot)com>:
> 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?
>

en que fecha o en que "fechas"... el hecho de que haya habido una
temperatura maxima no significa que haya ocurrido una sola vez...

> 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;
>

lo cual claramente es incorrecto porque no estas definiendo que fecha
del grupo deseas obtener (es decir del grupo de veces en que en city
llego a haber temp_lo temperatura)

> pero en Postgres,si hago esto, me reclama que date no debe estar en el
> group by.

sera que te reclama que "debe" estar?

> Claramente, esto no sería útil, dado que al ponerlo en el

define "util"

> group by, me desagrega la maxima temperatura de la ciudad por dias.
>

en realidad lo agrupa por ciudad y fecha... no lo desagrega... ah!
bueno, eso es semantica!!!

> Cuál sería la manera correcta de hacer este query?
>

solo llego hasta aqui, no se me ocurre forma de filtrarlo mas... mas
que con una funcion...

SELECT city, date, temp_lo
FROM weather
WHERE (city,temp_lo) IN (SELECT city, max(temp_lo)
FROM weather
GROUP BY city)

--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Raul Andres Duque 2009-03-04 21:13:51 Re: Usando GROUP BY
Previous Message Emiliano Moscato 2009-03-04 19:31:20 Usando GROUP BY