Application domotique - Recherches avec des fonctions d'agrégation

Série d'exercices

Cet exercice fait partie d'une série :

On souhaite gérer une installation domotique d'une maison afin de règler la température dans chaque pièce.

Au lieu de régler la température pièce par pièce, on a défini des profils et on établit des consignes pour chaque profil. On regroupe les pièces selon les profils suivants :

  • Chambre (chambre principale...)
  • Pièce de vie (salon, cuisine...)
  • Pièce technique (local technique, buanderie, garage...)
  • Salle d'eau (salle de bain, toilettes...)

L'application permet également de relever les températures dans certaines pièces de façon régulière.

On a enregistré en mémoire une base de données dont la structure est présentée par le schéma ci-dessous :

sql

L'exercice utilise les mots SELECT, JOIN, WHERE et FROM.

Les fonctions d'agrégation

Les fonctions d'agrégation dans le langage SQL permettent d’effectuer des opérations statistiques sur un ensemble d’enregistrement.

nom utilisation
COUNT dénombre le nombre d'enregistrements
MIN détermine la valeur minimale
MAX détermine la valeur maximale
SUM calcule la somme des valeurs
AVG calcule la moyenne des valeurs
GROUP BY regroupe les enregistrements pour un champ donné

On demande de compléter le code proposé pour réaliser les requêtes SQL suivantes :



Question 1

Créer la requête pour obtenir le nombre de pièces de profil "Local technique" :



Solution
SQL
SELECT COUNT(référence), type
FROM Pièce
JOIN Profil ON Profil.id_profil = Pièce.profil
WHERE type = "Pièce technique";
Question 2

Créer les requêtes pour déterminer les valeurs minimale et maximale des relevés de températures :





Solution
SQL
SELECT MIN(temp) AS temp_min, MAX(temp) AS temp_max
FROM Température;
Question 3

Créer la requête pour obtenir la moyenne de température par pièce, ave le nom de la pièce :





Solution
SQL
SELECT AVG(temp), désignation
FROM Température
JOIN Pièce ON Température.pièce = Pièce.référence
GROUP BY pièce;