none
AYUDA CONSULTA SQL RRS feed

  • Pregunta

  • Suponemos que en la base de datos existe la tabla Respuestas con la siguiente información:
    Escribir una consulta SQL para saber la cantidad de preguntas que fueron respondidas por cada usuario en cada encuesta.
    El resultado de la consulta tendrá que devolver (idUsuario, idEncuesta, cantidad de respuestas)

    https://i.imgur.com/QO9Cqds.png

    Muchas gracias

    sábado, 20 de junio de 2020 1:07

Todas las respuestas

  • Hola YAZLUCIA:

    Para hacer la consulta puedes utilizar la función count con la cláusula Group by.

    No te será difícil. Si te atascas, pega lo que lleves de consulta en este hilo, y te ayudamos.

    Group by

    https://javifer2.wordpress.com/?s=group+by

    Count

    https://docs.microsoft.com/es-es/sql/t-sql/functions/count-transact-sql?view=sql-server-ver15

    sábado, 20 de junio de 2020 5:03
  • Hola muchas gracias por responder. No me doy mucha idea de como usar esos comandos ya que no me doy mucha idea con el tema , Lo que pude ir haciendo es esto pero creo que esta mal.

    SELECT  idEncuesta FROM `Repuestas` where  o no se como seria, para que la consulta me devuelva (idUsuario, idEncuesta, cantidad de respuestas), gracias!

    Saludos!

    sábado, 20 de junio de 2020 22:16
  • SELECT  DISTINCT idUsuario FROM Repuestas WHERE  no se que poner acá  ORDER BY idUsuario; me voy dando mejor una idea de como usarlo pero en no se como hacer para q me devuelva la cantidad   de preguntas que fueron respondidas por cada usuario. Muchas gracias
    sábado, 20 de junio de 2020 23:46
  • Hola YAZLUCIA:

    Tienes que usar la función count

    select count(*) as cantidad, idUsuario, idEncuesta
    from respuestas
    group by idUsuario, idEncuesta


    Esto te devolverá un número en la columna cantidad, por cada diferencia de idUsuario, idEncuesta.

    Por ejemplo, si yo creo una tabla de respuestas, donde almaceno el idUsuario, y el idEncuesta

    create table Respuestas
    (
      id     int
    , idUsuario  int
    , idEncuesta int
    , idPregunta int
    , respuesta  varchar(100)
    );
    GO

    La relleno con los valores.

    INSERT INTO Respuestas
    (id, idUsuario, idEncuesta, idPregunta, respuesta)
    values
    (1 ,1,1,5,'res a'),
    (2 ,1,1,6,'res b'),
    (3 ,1,1,7,'res a'),
    (4 ,1,2,8,'res d'),
    (5 ,1,2,9,'res a'),
    (6 ,2,1,1,'res b'),
    (7 ,2,2,2,'res a'),
    (8 ,2,2,3,'res c'),
    (9 ,3,1,5,'res a'),
    (10,3,1,6,'res e');
    go

    La solución planteada devuelve

    select count(*) as cantidad
         , idUsuario
         , idEncuesta
    from respuestas
    group by idUsuario, idEncuesta

    Porque hay 3 usuarios, que han respondido a la encuesta 1. De los cuales el usuario id1 ha respondido tres veces, el dos 1 vez y el 3 dos veces.

    Esta es la idea de count con group by.

    domingo, 21 de junio de 2020 6:46
  • Hola YAZLUCIA

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las respuestas proporcionadas?  

    lunes, 22 de junio de 2020 15:48
    Moderador
  • Hola disculpe la demora tuve unos dias muy ocupados y recien entro al foro. Queria agradecerle porque me fue de una gran ayuda y me sirvio mucho. Ojala poder contar con su ayuda  en otras consultas de SQL que tengo que hacer pronto ya a que gracias a usted pude aprender a hacer la consulta .Muchas gracias por ayudar.
    jueves, 25 de junio de 2020 21:47