Questions
Question
Créer en SQL la vue v_questionnaire
permettant d'afficher tous les questionnaires avec leurs questions sous la forme suivante.
questionnaire | number | label |
---|---|---|
Questionnaire BDD | 1 | Aimez vous l'UML ? |
Questionnaire BDD | 2 | Aimez vous le Relationnel ? |
Questionnaire BDD | 3 | Aimez vous le SQL ? |
Questionnaire DW | 1 | Aimez vous le dimensionnel ? |
Questionnaire DW | 2 | Aimez vous le relationnel-objet ? |
... |
Indice
Les questions d'un même questionnaire doivent se suivre et être dans l'ordre croissant de leur numéro number
.
Solution
CREATE VIEW v_questionnaire AS
SELECT questionnaire, number, label
FROM question
ORDER BY questionnaire, number
Question
Écrire en algèbre relationnel et en SQL la requête permettant d'afficher toutes les questions avec les logins des utilisateurs qui y ont répondu et leur réponse.
number | label | login | value |
---|---|---|---|
1 | Aimez vous l'UML ? | nf17p001 | -1 |
1 | Aimez vous l'UML ? | nf17p002 | 2 |
1 | Aimez vous l'UML ? | nf17p003 | -1 |
... | |||
2 | Aimez vous le Relationnel ? | nf17p001 | 1 |
2 | Aimez vous le Relationnel ? | nf17p002 | 2 |
... |
Solution
Projection (
Jointure (answer, question, question=number AND questionnaire=questionnaire),
number,label,login,value)
SELECT q.number, q.label, a.login, a.value
FROM answer a JOIN question q
ON a.question=q.number AND a.questionnaire=q.questionnaire
Question
Écrivez en SQL la requête permettant d'obtenir la moyenne pour chaque question de la base de données. [1pt]
questionnaire | question | label | moyenne |
---|---|---|---|
Questionnaire BDD | 1 | Aimez vous l'UML ? | -1.2 |
Questionnaire BDD | 2 | Aimez vous le Relationnel ? | 1.9 |
Questionnaire BDD | 3 | Aimez vous le SQL ? | 0.1 |
Questionnaire DW | 1 | Aimez vous le dimensionnel ? | 1.1 |
Questionnaire DW | 2 | Aimez vous le relationnel-objet ? | -1.2 |
... |
Solution
SELECT a.questionnaire, q.number, q.label, avg(a.value)
FROM answer a JOIN question q
ON a.question=q.number AND a.questionnaire=q.questionnaire
GROUP BY a.questionnaire, q.number, q.label
ORDER BY a.questionnaire, q.number