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 <[email protected]>: > 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: [email protected] ICQ: 97148268 - Enviado a la lista de correo pgsql-es-ayuda ([email protected]) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
