MySQL - select count, de dos columnas diferentes misma tabla.

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 6 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

select count, de dos columnas diferentes misma tabla.

Publicado por Manuel (4 intervenciones) el 10/04/2019 20:06:22
trabajo en el motor sql managent studio v17.9


Hola buenas tardes la duda que tengo es quiero hacer una consulta. de una encuesta
tengo
-los 0 significa que dijo "No" y 1 dijo que "Si"
mi tabla es :

1
2
3
pregunta 1 ---pregunta2---pregunta 3
      1         0           1
      0         1           1


lo que quiero hacer es contar los 1 y los 0 para graficar
pero no se como agarrar y contar los unos de distintas columnas, hice algo asi pero no me dio resultado

1
2
3
4
select COUNT(pregunta1) as p1, + COUNT(pregunta2) as p2, + COUNT(pregunta3) as p3, + COUNT(pregunta4)       as p4
   from rs_calificacion_ticket
   where pregunta1 =1 or pregunta2=1 or pregunta3=1 or pregunta4=0
   group by pregunta1, pregunta2

alguna ayuda o ilumineme losexpertos que existe en esta comunidad.
Capturaticket
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vega
Val: 69
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

select count, de dos columnas diferentes misma tabla.

Publicado por Vega (30 intervenciones) el 10/04/2019 21:58:47
te vale esto
1
2
select Id_calificacionticket, id_tiket, pregunta1, comentario1, pregunta2, comentario2, pregunta3, comentario3, pregunta4, comentario4, suma = pregunta1+ pregunta2 + pregunta3+ pregunta4
from rs_calificacion_ticket
?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 6 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

select count, de dos columnas diferentes misma tabla.

Publicado por Manuel (4 intervenciones) el 10/04/2019 23:07:09
no, ya lo intente asi pero no me da una respuesta concreta a lo que busco. muy amable por interesarse en mi duda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vega
Val: 69
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

select count, de dos columnas diferentes misma tabla.

Publicado por Vega (30 intervenciones) el 10/04/2019 23:31:30
Podrias enmaqutar el resultado que te gustaría tener?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 6 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

select count, de dos columnas diferentes misma tabla.

Publicado por Manuel (4 intervenciones) el 10/04/2019 23:33:36
de resultado
algo asi

Captura4
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vega
Val: 69
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

select count, de dos columnas diferentes misma tabla.

Publicado por Vega (30 intervenciones) el 11/04/2019 01:46:02
Te explico.
¿La solución? Pues tienes varias formas pero te presento dos opciones para que vayas valorando la que mejor the convenga. Pero... el problema que llevas teniendo viene a raíz de la estructura de la tabla. ¿Que respuesta me darías si te hiciera las siguientes preguntas?:
- ¿Que pasa si mañana necesitas añadir otra pregunta a ésta tabla?
- ¿Que vas a hacer con el recuento de preguntas si ayer tenías 4 preguntas, y hoy estás evaluado el mismo registro pero ahora con una 5 pregunta que nunca estuvo presente en el formulario que rellenó tu usuario?

Como veras tus resultados van a ir cambiando en función del número de columas que tengas en un momento dado.

En mi opinión, por lo general suelo "desnormalizar" tablas con los tipos de datos que estas intenando manejar. En el caso de tu tabla he usado la función unpivot para conseguir mi objectivo pero te recomendariá que retructuraras tu tabla para que tengas una column que contiene la pregunta y luego otra columna que represent el valor contestado; así las consultas que tengas que realizar te saldrán más fácilmente.

en el ejemplo uso un CTE para modelar la solución:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
;
with a as (select id = cast(null as char(1)) , pregunta1 = cast(null as bit)
, pregunta2 = cast(null as bit)
, pregunta3 = cast(null as bit)
, pregunta4 = cast(null as bit)
union
select 'a',1,1,0,1 union
select 'b',1,1,0,0
 
),
man as (select id, pregunta = 'pregunta1', valor = pregunta1 from a union
select id, pregunta = 'pregunta2', pregunta2 from a union
select id, pregunta = 'pregunta3', pregunta3 from a union
select id, pregunta = 'pregunta4', pregunta4 from a),
unpiv as ( -- Aqui bajo de normalización un poquito
SELECT id, pregunta, valor
FROM
   (SELECT id, pregunta1, pregunta2, pregunta3, pregunta4
   FROM a) p
UNPIVOT
   (valor fOR pregunta IN
      (pregunta1, pregunta2, pregunta3, pregunta4)
)AS unpvt
),
con_un_crossjoin AS ( -- solucion con un crossjoin
select * from (select si = count(valor)  from unpiv where valor = 1) [si]
cross join (select [no]= count(valor)  from unpiv where valor = 0) [no]
),
con_un_pivot as ( -- solución con la función PIVOT
select  [1] as [Si] , [0] as [No]
from  (
		select pregunta , valor from unpiv
		) p
pivot (
		count(pregunta) for valor in ([1],[0])
		) as pvt
)
-- resultados por ambos métodos...
select 'Usando un cross join ' as [opcion] , * from con_un_crossjoin
union
select 'Usando un UnPivot ', * from con_un_pivot
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 6 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

select count, de dos columnas diferentes misma tabla.

Publicado por Manuel (4 intervenciones) el 11/04/2019 01:54:02
Gracias amigo por tu super respuesta tambien he visto ese problema de la tabla, pero aun asi es la orden de dejar la tabla asi. Creo ya pude resolver , pero trabajo en SCript CASE que no me acepta algunos comando de sql server y ando buscando la forma de hacerlo de otra forma es esta:
select(SUM (pregunta1) + SUM (pregunta2) + SUM (pregunta3) + SUM (pregunta4)) AS "SI",
    count (*) *4 - (SUM (pregunta1) + SUM (pregunta2) + SUM (pregunta3) + SUM(pregunta4)) AS "No"
from rs_calificacion_ticket

la herramienta me dice que tengo un error de sql por eso busco otra forma a ver si no me manda el mismo error
pero muy amable por la respuesta. se te agradece

usare una de la opciones que me mandas a ver que pasa que tan factible es meterlo a la herramienta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar