From: | "Miguel Angel" <mvillagomez(at)sayab(dot)com(dot)mx> |
---|---|
To: | <pgsql-es-ayuda(at)postgresql(dot)org> |
Cc: | <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Busqueda engorrosa |
Date: | 2006-01-12 18:54:42 |
Message-ID: | 20060113185738.970B99DC822@postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Antes que nada quiero dar las gracias a los integrantes de la lista ya que
me han ayudado bastante.
Mi problema es este:
Tengo mi bd con varias tablas una de ellas es estudiantes en la cual
almaceno el registro de 2,500
alumnos entre sus diversos datos tengo la columna especialidades.
Mas o menos asi
Tabla Estudiantes
Nombre Grado Asignatura Especialidad
-- -- -- A
-- -- -- B
-- -- -- C
-- -- -- D
Lo que tengo que hacer es contar cuantos alumnos hay es la especialidad A,
B, C; puesto que son 15
especialidades diferentes y no tener que hacer 15 veces:
select count(especialidad) from estudiantes where especialidades='A'
Quiero preguntar si se puede hacer una tabla que en una columna me arroje
las especialidades y en otra
el numero de alumnos que estan en esa especialidad, ejemplo:
Especialidad Cantidad
A 10
B 159
C 243
D 17
Tengo la idea de querer guardar los diferentes valores de especialidades
dentro de un array y despues
usar un ciclo que cuente cada especialidad y lo guarde en otro array si
quieren
(preferiria un array de dos dimensiones para guardar en el primero la
especialidad y en el segundo
la cantidad ya sea haciendo cast o que lo guarde en formato de caracter,
pero no se si en primer lugar
se pueda declarar dicha variable en postgresql; ya que tengo entendido que
puede tener codigo en C)
y despues muestre dicho array o pongo los valores en una tabla que sirva de
aux.
La otra idea que tengo es crear una tabla AUX almacenar los distintos
valores de especialidades y despues
leer cada fila para hacer la busqueda dentro de mi tabla y guardar el
resultado dentro de otra columna en AUX,
creo que seria asi:
FilaA=inicio de la columna A(donde estan especialidades) en la tabla AUX
FilaB=inicio de la columna B(donde estaran los resultados de cont) en la
tabla AUX
while(No se llegue al final de la tabla en la columnaB)
{
insert int aux.columnaB.FilaB select count(especialides) from estudiantes
where especialides=aux.columnaA.FilaA;
columnaB.filaB++; (pasar a la siguiente fila)
columnaA.filaA++; (pasar a la siguiente fila)
}
Pongo estar razones asi pues programo en C++, pero no tengo idea de como:
- Declarar una variable si se puede
- Hacer una funcion en C dentro de postgres
- Tomar el valor de una celda en una columna y fila especificas
Me pueden dar alguna sugerencia, por favor; tal vez este diciendo una
estupidez o sea muy simple y me ahogo en un simple vaso de agua; pero en
serio no se como hacer eso.
From | Date | Subject | |
---|---|---|---|
Next Message | proves_es@yahoo.es | 2006-01-12 21:05:15 | Re: Re: Ploblemas de instalación en Windows (particion D) |
Previous Message | Esteban Osorio | 2006-01-12 16:51:09 | O.T. - Prueba de correo. |