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."
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 |