[opensuse-es] pregunta sobre un comando postgres
Hola lista; Perdonar que acaso no sea el sitio adecuado de preguntar, pero he visto que aqui hay gente que dominan mucho el Postgres. Busco simplemente un comando que no he encontrado(quizá no exista) en el manual para sumar los elementos de un array. Ejemplo, tengo una tabla: postgres=# \d personal Tabla «public.personal» Columna | Tipo | Modificadores ------------+-----------+------------------------------------------------------- id | integer | not null default nextval('personal_id_seq'::regclass) nombre | text | sueldo_mes | integer[] | Índices: «personal_pkey» PRIMARY KEY, btree (id) quiero con un comando parecido al sum(columna), sumar todos los elementos de sueldo_mes para sacar sueldo_anual. gracias -- ************************************************** Juan Antonio Diéguez Martín Linux user #329149. See http://counter.li.org juanandieguez@telefonica.net Alcorcón (Madrid) ************************************************** ______________________________________________ LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Hola lista;
Perdonar que acaso no sea el sitio adecuado de preguntar, pero he visto que aqui hay gente que dominan mucho el Postgres. Busco simplemente un comando que no he encontrado(quizá no exista) en el manual para sumar los elementos de un array. Ejemplo, tengo una tabla: postgres=# \d personal Tabla «public.personal» Columna | Tipo | Modificadores ------------+-----------+------------------------------------------------------- id | integer | not null default nextval('personal_id_seq'::regclass) nombre | text | sueldo_mes | integer[] | Índices: «personal_pkey» PRIMARY KEY, btree (id)
quiero con un comando parecido al sum(columna), sumar todos los elementos de sueldo_mes para sacar sueldo_anual.
gracias ... y cual el el problema del sum(columna) para lo que lo necesitas ese es.
lo que te falta es agrupar por (group by) Jaime V --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Pues no, si te das cuenta sueldo_mes[] es un array. Por lo que aunque haga un group by no me suma LOS ELEMENTOS de ese array. El Lunes, 26 de Febrero de 2007 19:57, jvelez@dinanet.net.co escribió:
Hola lista;
Perdonar que acaso no sea el sitio adecuado de preguntar, pero he visto que aqui hay gente que dominan mucho el Postgres. Busco simplemente un comando que no he encontrado(quizá no exista) en el manual para sumar los elementos de un array. Ejemplo, tengo una tabla: postgres=# \d personal Tabla «public.personal» Columna | Tipo | Modificadores ------------+-----------+------------------------------------------------ ------- id | integer | not null default nextval('personal_id_seq'::regclass) nombre | text | sueldo_mes | integer[] | Índices: «personal_pkey» PRIMARY KEY, btree (id)
quiero con un comando parecido al sum(columna), sumar todos los elementos de sueldo_mes para sacar sueldo_anual.
gracias
... y cual el el problema del sum(columna) para lo que lo necesitas ese es.
lo que te falta es agrupar por (group by)
Jaime V
--------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-- ************************************************** Juan Antonio Diéguez Martín Linux user #329149. See http://counter.li.org juanandieguez@telefonica.net Alcorcón (Madrid) ************************************************** ______________________________________________ LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 27/02/07, Juan Antonio Dieguez Martin escribió:
Pues no, si te das cuenta sueldo_mes[] es un array. Por lo que aunque haga un group by no me suma LOS ELEMENTOS de ese array.
Si no existe una instrucción directa en sql para sumar / operar con los valores de una matriz numérica, tendrás que utilizar algún lenguaje de programación (perl, php...) para obtener una nueva matriz con el valor de la suma de los elementos. Ojo, que de bases de datos estoy pez, es sólo una sugerencia :-P. Saludos, -- Camaleón --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2007-02-27 a las 13:23 +0100, Camaleón escribió:
Si no existe una instrucción directa en sql para sumar / operar con los valores de una matriz numérica, tendrás que utilizar algún lenguaje de programación (perl, php...) para obtener una nueva matriz con el valor de la suma de los elementos.
Ojo, que de bases de datos estoy pez, es sólo una sugerencia :-P.
Yo he oido de bases de datos que pueden guardar "procedures" dentro, o sea, código, supongo... :-? - -- Saludos Carlos E.R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFF5CvJtTMYHG2NR9URAs5OAJ44jQZOQD1zQXqISCxBfUALBP7w9ACglyeU DyVyJyrDjr8wUXWwMCguKUo= =07dA -----END PGP SIGNATURE-----
.. como eso de guardar arrays dentro de tuplas no es tan "sql-compliant" (se escribira asi?) pues lo que dijo carlos y camaleon no esta tan lejos de la realidad, te toca hacer generar tu propio sum que lea cada tupla y recorra cada vector sumando los valores.. eso toca o en perl o en php o en python o pgplsql o java o lo que sea pero toca a mano (esto es: a generar codigo) jaime V
--------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
quiero con un comando parecido al sum(columna), sumar todos los elementos de sueldo_mes para sacar sueldo_anual.
Revisaste ya en la guia del programador http://palomo.usach.cl/Docs/postgres/Postgres-Programmer.pdf o en el manual del usuario http://palomo.usach.cl/Docs/postgres/Postgres-User.pdf ? Si no hay nada lo que te queda es hacer una función en PL que haga ese trabajo. Saludos. --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El mar, 27-02-2007 a las 20:40 -0300, Gabriel escribió:
quiero con un comando parecido al sum(columna), sumar todos los elementos de sueldo_mes para sacar sueldo_anual.
Revisaste ya en la guia del programador http://palomo.usach.cl/Docs/postgres/Postgres-Programmer.pdf o en el manual del usuario http://palomo.usach.cl/Docs/postgres/Postgres-User.pdf ?
Si no hay nada lo que te queda es hacer una función en PL que haga ese trabajo.
Saludos.
También te puede ser útil http://www.google.com.ar/search?q=postgre+sum +array&btnG=B%C3%BAsqueda&hl=es&client=firefox-a&rls=org.mozilla%3Aes-ES %3Aofficial --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
participants (5)
-
Camaleón
-
Carlos E. R.
-
Gabriel
-
Juan Antonio Dieguez Martin
-
jvelez@dinanet.net.co