Re: Group by de mysql a postgresql

From: felipe fernandez <ffdezrguez(at)gmail(dot)com>
To: "Guillermo O(dot) Burastero" <linux(dot)gb(at)gmail(dot)com>
Cc: "Lista de PostgreSQL en Español" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Group by de mysql a postgresql
Date: 2011-11-18 11:20:31
Message-ID: CANfA91HHvCJ3aCVUmxHBoTRgZdYta9yUpCmEoQtYxMz+Z+5p=A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ha rehacer las querys ....

Gracias!

El 18 de noviembre de 2011 12:15, Guillermo O. Burastero <linux(dot)gb(at)gmail(dot)com
> escribió:

> Hola
>
> Tu consulta es en general irresoluble y desde el punto de vista
> semántico ambigua.
> El agrupamiento implica obtener UN SOLO REGISTRO por CADA DIFERENTE
> CLAVE DE AGRUPAMIENTO, por lo tanto en la salida SOLO PUEDEN estar los
> campos de la clave de agrupamiento o FUNCIONES DE AGREGADO SOBRE LAS
> DEMÁS COLUMNAS. Ej suma o promedio de expresiones numéricas sobre las
> demás columnas
>
> Si tengo tabla tPagos (idPersona, fecha, pago) y quiero saber la
> totalidad de los pagos por persona (idPersona) hago
>
> SELECT idPersona, summ (pago) from tPagos GROUP by idPersona ORDER by
> idPersona
>
> Fijate que NO TENDRÍA SENTIDO si hiciera porque una misma persona
> puede tener pagos en diferentes fechas.
>
> SELECT idPersona, fecha, summ (pago) from tPagos GROUP by idPersona
> ORDER by idPersona
>
> Si en cambio tiene sentido:
>
> SELECT idPersona, fecha, summ (pago) from tPagos GROUP by idPersona,
> fecha ORDER by idPersona, fecha
>
> en donde cada registro de salida tiene la suma de todos los pagos
> hechos a una persona en una determinada fecha (ya que fecha es también
> campo de agrupamiento).
>
> Mirá:
> http://www.postgresql.org/docs/9.1/static/sql-select.html#SQL-GROUPBY
>
>
> 2011/11/18 felipe fernandez <ffdezrguez(at)gmail(dot)com>:
> > Hola
> > Estoy migrando una base de datos de una web de mysql a postgresql. Los
> datos
> > ya están pero las querys que tiene group by son un dolor de cabeza.
> > Un ejemplo
> > SELECT users.id, users.username, users.email, users.realname
> >
> > FROM follow la
> > JOIN users ON users.id = la.user_id
> > WHERE users.deleted = 0
> > GROUP BY users.id
> > ERROR: column "users.username" must appear in the GROUP BY clause or be
> > used in an aggregate function
> > LÍNEA 1: SELECT users.id, users.username, users.email, users.realnam...
> > He probado a poner DISTINCT quitando el GROUP BY pero el resultado es
> > erróneo porque muestra TODAS los registros.
> > ¿Existe alguna manera de que sólo se puede agrupar por un único campo del
> > select?
> >
> >
> > --
> > Salu2
> >
> > Felipe Fernández Rguez
> > "Uno se alegra de resultar útil" Andrew Martin "El hombre bicentenario"
> > Isaac Asimov.
> > "Documentation is like sex: when it is good, it is very, very good; and
> when
> > it is bad, it is better than nothing."
> >
>
>
>
> --
> Guillermo O. Burastero
> Usuario GNU/Linux #84879 - http://counter.li.org/
> Bahía Blanca, Buenos Aires, Argentina
> Tel. +54 (291) 454-6132 - Móvil [15] 574-3173
> MSN: guillermo(dot)burastero(at)gmail(dot)com
> ICQ: 97148268
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org
> )
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>

--
Salu2

Felipe Fernández Rguez
"Uno se alegra de resultar útil" Andrew Martin "El hombre bicentenario"
Isaac Asimov.
"Documentation is like sex: when it is good, it is very, very good; and
when it is bad, it is better than nothing."

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ana Claudia Smail 2011-11-18 12:37:35 encoding
Previous Message Guillermo O. Burastero 2011-11-18 11:15:14 Re: Group by de mysql a postgresql