SQL - Ayuda con consula sql

 
Vista:
sin imagen de perfil

Ayuda con consula sql

Publicado por anonymous (1 intervención) el 05/10/2019 21:30:59
Buenas tardes necesito que si alguien puede me ayude por favor, tengo esta base de datos mssql (imagen) y necesito una consulta la cual me permita obtener el id del candidato, nombre del candidato, el total de votos que tuvo cada candidato pero clasificado por la facultad, por ejemplo si pablito tiene 10 votos quisiera obtener esos 10 votos pero clasificado así: (suponiendo que los usuarios que son de diferentes facultades ya votaron) 3 votos de facultad 'a' 4 de facultad 'b' y 3 de facultad 'c' que sumados serian los 10 votos que obtuvo. Así con los candidatos que tenga la bd pero por votación (me imagino un where votingid = 1 o el id de votación que se desee ), ya que hay varias votaciones por ende varios candidatos.

SI ALGUIEN ME PUEDE AYUDAR SE LO AGRADECERIA DEMASIADO.


Untitled
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 pablo
Val: 31
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Ayuda con consula sql

Publicado por pablo (9 intervenciones) el 25/10/2019 14:36:04
Buenas

1
2
3
4
5
6
7
8
9
10
11
12
Select c.CandidateId, u.FirstName, u.LastName, c.QuantityVotes, g.Description
from Users u
inner join Candidates c
on u.UserId = c.UserId
inner join Votings v
on c.VotingId = v.VotingId
inner join VotingGroup vg
on  v.VotingId = vg.VotingId
inner join Groups g
on vg.GroupId = g.GroupId
where g.GroupId = 1
and v.VotingId = 1;
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 Francisco
Val: 98
Ha disminuido 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Ayuda con consula sql

Publicado por Francisco (32 intervenciones) el 25/10/2019 22:50:42
Hola

Intenta esto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-- CANDIDATOS Y FACULTAD
WITH candidatos AS (
 
    SELECT cc.candidateid AS candidatoid, u.lastname AS candidatonombre, u.firstname AS candidatoapellido, g.description AS facultad
        FROM candidates AS cc
            INNER JOIN users AS u ON u.userid = cc.userid
            INNER JOIN groupmembers as gm ON gm.userid = u.user_id
            INNER JOIN groups as g ON g.groupid = gm.groupid
),
-- VOTOS POR CANDIDATO
votos AS (
    SELECT cc.candidateid AS candidatoid, v.quantityvotes cantidadvotos, v.quantityblankvotes AS cantidadvotosblancos
        FROM candidates AS cc
            INNER JOIN votings AS v ON v.votingid = cc.votingid
            INNER JOIN votinggroup AS vg ON vg.votingid = v.votingid
            -- INNER JOIN groups as g ON g.groupid = vg.groupid
)
-- VOTOS POR CANDIDATO FACULTAD
SELECT c.facultad, c.candidatonombre, c.candidatoapellido, SUM(v.cantidadvotos) totalvotos, SUM(v.cantidadvotosblancos) totalvotosblancos
    FROM candidatos AS c
    INNER JOIN votos AS v ON v.candidatoid = c.candidatoid
    GROUP BY c.facultad, c.candidatonombre, c.candidatoapellido
    ORDERY SUM(v.cantidadvotos) DESC

Saludos
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