Problema con consulta haciendo case.... desde Colombia

19/04/2004 - 20:42 por Ing. Bernardo Cordoba | Informe spam
HOla como estan tengo el siguiente problema, ya que no soy un expero en
querys SQL.

tengo la siguiente consulta:

Resultado SQL
Servidor: localhost
Base de datos : prev_personal
Tiempo de generación: 19-04-2004 a las 11:10:58
Generado por: phpMyAdmin 2.5.3-rc2
consulta SQL: SELECT * FROM `encuesta1` LIMIT 0, 30;

p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12
0 0 0 0 0 4 0 0 0 0 4 0
4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4
2 2 2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 4 4 4 4 3 4 4
0 0 0 0 0 4 0 0 0 0 4 0
0 0 0 0 0 4 4 4 4 4 4 4
0 0 0 0 0 4 0 0 0 0 0 0
3 3 3 3 3 3 3 3 3 3 3 3

son doce columnas y en cada columna estan los resultados, necesito hacer un
query donde me sume y cuenta las columnas, pero donde hayan valores nulos no
las haga.
por ejemplo en la columna P1 me deberia arrojar:

sum(p1)
count(p1)=6

pero en la columna P6 deberia ser asi:

sum (p6)6
count(p6)

lo que sucede es que tengo una encuesta donde tengo que totalizar los
promedios agrupados por empleado pero sin tener en cuenta los valores nulos
o en ceros.

Gracias

Bernardo

Preguntas similare

Leer las respuestas

#1 Isaías
19/04/2004 - 21:04 | Informe spam
Hola Bernardo

¿Que motor de base de datos utilizas?


CREATE TABLE COLUMNAS(
P1 tinyint,
P2 tinyint,
P3 tinyint,
P4 tinyint,
P5 tinyint,
P6 tinyint,
P7 tinyint,
P8 tinyint,
P9 tinyint,
P10 tinyint,
P11 tinyint,
P12 tinyint)
INSERT INTO COLUMNAS VALUES(


INSERT INTO COLUMNAS VALUES(0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
4, 0)
INSERT INTO COLUMNAS VALUES(4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4)
INSERT INTO COLUMNAS VALUES(4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4)
INSERT INTO COLUMNAS VALUES(4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4)
INSERT INTO COLUMNAS VALUES(2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2)
INSERT INTO COLUMNAS VALUES(3, 3, 3, 3, 3, 4, 4, 4, 4, 3,
4, 4)
INSERT INTO COLUMNAS VALUES(0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
4, 0)
INSERT INTO COLUMNAS VALUES(0, 0, 0, 0, 0, 4, 4, 4, 4, 4,
4, 4)
INSERT INTO COLUMNAS VALUES(0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
0, 0)
INSERT INTO COLUMNAS VALUES(3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3)

SELECT
COLUMNASP1 = SUM(CASE WHEN P1 = 0 THEN 0 ELSE 1 END), SUM
(P1) AS TOTALP1,
COLUMNASP2 = SUM(CASE WHEN P2 = 0 THEN 0 ELSE 1 END), SUM
(P2) AS TOTALP2,
COLUMNASP3 = SUM(CASE WHEN P3 = 0 THEN 0 ELSE 1 END), SUM
(P3) AS TOTALP3,
COLUMNASP4 = SUM(CASE WHEN P4 = 0 THEN 0 ELSE 1 END), SUM
(P4) AS TOTALP4,
COLUMNASP5 = SUM(CASE WHEN P5 = 0 THEN 0 ELSE 1 END), SUM
(P5) AS TOTALP5,
COLUMNASP6 = SUM(CASE WHEN P6 = 0 THEN 0 ELSE 1 END), SUM
(P6) AS TOTALP6,
COLUMNASP7 = SUM(CASE WHEN P7 = 0 THEN 0 ELSE 1 END), SUM
(P7) AS TOTALP7,
COLUMNASP8 = SUM(CASE WHEN P8 = 0 THEN 0 ELSE 1 END), SUM
(P8) AS TOTALP8,
COLUMNASP9 = SUM(CASE WHEN P9 = 0 THEN 0 ELSE 1 END), SUM
(P9) AS TOTALP9,
COLUMNASP10 = SUM(CASE WHEN P10 = 0 THEN 0 ELSE 1 END), SUM
(P10) AS TOTALP10,
COLUMNASP11 = SUM(CASE WHEN P11 = 0 THEN 0 ELSE 1 END), SUM
(P11) AS TOTALP11,
COLUMNASP12 = SUM(CASE WHEN P12 = 0 THEN 0 ELSE 1 END), SUM
(P12) AS TOTALP12
FROM COLUMNAS
Respuesta Responder a este mensaje
#2 Marcelo W. Lopez Cremona
19/04/2004 - 21:13 | Informe spam
Hola, usa la siguiente sintáxis.

DECLARE @t table (p decimal(10,2))
INSERT INTO @t VALUES(25.6)
INSERT INTO @t values (3.5)
INSERT INTO @t values(null)
SELECT SUM(P), COUNT(*)
FROM @t
WHERE P IS NOT NULL

SELECT SUM(P), COUNT(*)
FROM @T

Si deseas sacar promedios : Usa la función AVG de sql server.

suerte ;-)

Marcelo W. López
Tucumán - Argentina



"Ing. Bernardo Cordoba" escribió en el mensaje
news:#
HOla como estan tengo el siguiente problema, ya que no soy un expero en
querys SQL.

tengo la siguiente consulta:

Resultado SQL
Servidor: localhost
Base de datos : prev_personal
Tiempo de generación: 19-04-2004 a las 11:10:58
Generado por: phpMyAdmin 2.5.3-rc2
consulta SQL: SELECT * FROM `encuesta1` LIMIT 0, 30;

p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12
0 0 0 0 0 4 0 0 0 0 4 0
4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4
2 2 2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 4 4 4 4 3 4 4
0 0 0 0 0 4 0 0 0 0 4 0
0 0 0 0 0 4 4 4 4 4 4 4
0 0 0 0 0 4 0 0 0 0 0 0
3 3 3 3 3 3 3 3 3 3 3 3

son doce columnas y en cada columna estan los resultados, necesito hacer


un
query donde me sume y cuenta las columnas, pero donde hayan valores nulos


no
las haga.
por ejemplo en la columna P1 me deberia arrojar:

sum(p1)
count(p1)=6

pero en la columna P6 deberia ser asi:

sum (p6)6
count(p6)

lo que sucede es que tengo una encuesta donde tengo que totalizar los
promedios agrupados por empleado pero sin tener en cuenta los valores


nulos
o en ceros.

Gracias

Bernardo


Respuesta Responder a este mensaje
#3 Miramontes
19/04/2004 - 22:51 | Informe spam
Tu puedes hacer los siguiente :

select COUNT( CASE WHEN P1 IS NULL OR P1 <= 0 THEN NULL
ELSE P1 END ) as Cont_P1 ,
SUM ( P1 ) as Sum_P1,
COUNT( CASE WHEN P2 IS NULL OR P2 <= 0 THEN NULL
ELSE P2 END ) as Cont_P2 ,
SUM ( P2 ) as Sum_P2,
COUNT( CASE WHEN P3 IS NULL OR P3 <= 0 THEN NULL
ELSE P3 END ) as Cont_P3 ,
SUM ( P3 ) as Sum_P3,
COUNT( CASE WHEN P4 IS NULL OR P4 <= 0 THEN NULL
ELSE P4 END ) as Cont_P4 ,
SUM ( P4 ) as Sum_P4,
COUNT( CASE WHEN P5 IS NULL OR P5 <= 0 THEN NULL
ELSE P4 END ) as Cont_P5 ,
SUM ( P5 ) as Sum_P5
from `encuesta1`
Respuesta Responder a este mensaje
#4 Ing. Bernardo Cordoba
20/04/2004 - 01:49 | Informe spam
No necesito realizar la tabla, pues esta ya esta creada, yo estoy utilizando
MYSQL es para una intranet.
El problema que tengo es que me cuenta todas las filas de una columna y yo
necesito saber es cuantos valores hay diferentes de cero en la columna para
promediar luego.

Tengo que desechar los valores en cero, ya que las estadisticas se me van ha
los extremos.

"Isaías" escribió en el mensaje
news:12c601c42641$24d0cd10$

Hola Bernardo

¿Que motor de base de datos utilizas?


CREATE TABLE COLUMNAS(
P1 tinyint,
P2 tinyint,
P3 tinyint,
P4 tinyint,
P5 tinyint,
P6 tinyint,
P7 tinyint,
P8 tinyint,
P9 tinyint,
P10 tinyint,
P11 tinyint,
P12 tinyint)
INSERT INTO COLUMNAS VALUES(


INSERT INTO COLUMNAS VALUES(0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
4, 0)
INSERT INTO COLUMNAS VALUES(4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4)
INSERT INTO COLUMNAS VALUES(4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4)
INSERT INTO COLUMNAS VALUES(4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4)
INSERT INTO COLUMNAS VALUES(2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2)
INSERT INTO COLUMNAS VALUES(3, 3, 3, 3, 3, 4, 4, 4, 4, 3,
4, 4)
INSERT INTO COLUMNAS VALUES(0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
4, 0)
INSERT INTO COLUMNAS VALUES(0, 0, 0, 0, 0, 4, 4, 4, 4, 4,
4, 4)
INSERT INTO COLUMNAS VALUES(0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
0, 0)
INSERT INTO COLUMNAS VALUES(3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3)

SELECT
COLUMNASP1 = SUM(CASE WHEN P1 = 0 THEN 0 ELSE 1 END), SUM
(P1) AS TOTALP1,
COLUMNASP2 = SUM(CASE WHEN P2 = 0 THEN 0 ELSE 1 END), SUM
(P2) AS TOTALP2,
COLUMNASP3 = SUM(CASE WHEN P3 = 0 THEN 0 ELSE 1 END), SUM
(P3) AS TOTALP3,
COLUMNASP4 = SUM(CASE WHEN P4 = 0 THEN 0 ELSE 1 END), SUM
(P4) AS TOTALP4,
COLUMNASP5 = SUM(CASE WHEN P5 = 0 THEN 0 ELSE 1 END), SUM
(P5) AS TOTALP5,
COLUMNASP6 = SUM(CASE WHEN P6 = 0 THEN 0 ELSE 1 END), SUM
(P6) AS TOTALP6,
COLUMNASP7 = SUM(CASE WHEN P7 = 0 THEN 0 ELSE 1 END), SUM
(P7) AS TOTALP7,
COLUMNASP8 = SUM(CASE WHEN P8 = 0 THEN 0 ELSE 1 END), SUM
(P8) AS TOTALP8,
COLUMNASP9 = SUM(CASE WHEN P9 = 0 THEN 0 ELSE 1 END), SUM
(P9) AS TOTALP9,
COLUMNASP10 = SUM(CASE WHEN P10 = 0 THEN 0 ELSE 1 END), SUM
(P10) AS TOTALP10,
COLUMNASP11 = SUM(CASE WHEN P11 = 0 THEN 0 ELSE 1 END), SUM
(P11) AS TOTALP11,
COLUMNASP12 = SUM(CASE WHEN P12 = 0 THEN 0 ELSE 1 END), SUM
(P12) AS TOTALP12
FROM COLUMNAS
Respuesta Responder a este mensaje
#5 Maximiliano Damian Accotto
20/04/2004 - 02:27 | Informe spam
hola, no creo que lo que te hayan dicho funcione porque es para Microsoft
Sql Server, es mas este es el News de Microsoft Sql server y no el de Mysql
;-), quizas tu consulta para que sea mejor respondida debas hacerla en el
news de Mysql :-)

Suerte


Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Ing. Bernardo Cordoba" escribió en el mensaje
news:
No necesito realizar la tabla, pues esta ya esta creada, yo estoy


utilizando
MYSQL es para una intranet.
El problema que tengo es que me cuenta todas las filas de una columna y yo
necesito saber es cuantos valores hay diferentes de cero en la columna


para
promediar luego.

Tengo que desechar los valores en cero, ya que las estadisticas se me van


ha
los extremos.

"Isaías" escribió en el mensaje
news:12c601c42641$24d0cd10$

Hola Bernardo

¿Que motor de base de datos utilizas?


CREATE TABLE COLUMNAS(
P1 tinyint,
P2 tinyint,
P3 tinyint,
P4 tinyint,
P5 tinyint,
P6 tinyint,
P7 tinyint,
P8 tinyint,
P9 tinyint,
P10 tinyint,
P11 tinyint,
P12 tinyint)
INSERT INTO COLUMNAS VALUES(


INSERT INTO COLUMNAS VALUES(0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
4, 0)
INSERT INTO COLUMNAS VALUES(4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4)
INSERT INTO COLUMNAS VALUES(4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4)
INSERT INTO COLUMNAS VALUES(4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4)
INSERT INTO COLUMNAS VALUES(2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2)
INSERT INTO COLUMNAS VALUES(3, 3, 3, 3, 3, 4, 4, 4, 4, 3,
4, 4)
INSERT INTO COLUMNAS VALUES(0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
4, 0)
INSERT INTO COLUMNAS VALUES(0, 0, 0, 0, 0, 4, 4, 4, 4, 4,
4, 4)
INSERT INTO COLUMNAS VALUES(0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
0, 0)
INSERT INTO COLUMNAS VALUES(3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3)

SELECT
COLUMNASP1 = SUM(CASE WHEN P1 = 0 THEN 0 ELSE 1 END), SUM
(P1) AS TOTALP1,
COLUMNASP2 = SUM(CASE WHEN P2 = 0 THEN 0 ELSE 1 END), SUM
(P2) AS TOTALP2,
COLUMNASP3 = SUM(CASE WHEN P3 = 0 THEN 0 ELSE 1 END), SUM
(P3) AS TOTALP3,
COLUMNASP4 = SUM(CASE WHEN P4 = 0 THEN 0 ELSE 1 END), SUM
(P4) AS TOTALP4,
COLUMNASP5 = SUM(CASE WHEN P5 = 0 THEN 0 ELSE 1 END), SUM
(P5) AS TOTALP5,
COLUMNASP6 = SUM(CASE WHEN P6 = 0 THEN 0 ELSE 1 END), SUM
(P6) AS TOTALP6,
COLUMNASP7 = SUM(CASE WHEN P7 = 0 THEN 0 ELSE 1 END), SUM
(P7) AS TOTALP7,
COLUMNASP8 = SUM(CASE WHEN P8 = 0 THEN 0 ELSE 1 END), SUM
(P8) AS TOTALP8,
COLUMNASP9 = SUM(CASE WHEN P9 = 0 THEN 0 ELSE 1 END), SUM
(P9) AS TOTALP9,
COLUMNASP10 = SUM(CASE WHEN P10 = 0 THEN 0 ELSE 1 END), SUM
(P10) AS TOTALP10,
COLUMNASP11 = SUM(CASE WHEN P11 = 0 THEN 0 ELSE 1 END), SUM
(P11) AS TOTALP11,
COLUMNASP12 = SUM(CASE WHEN P12 = 0 THEN 0 ELSE 1 END), SUM
(P12) AS TOTALP12
FROM COLUMNAS


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida