Exercices : Sélection de données dans une table avec SQL¶
1. Afficher le contenu d’une table avec SQL¶
2. Afficher le contenu d’une colonne d’une table¶
3. Afficher le contenu corrigé de la colonne d’un table¶
SELECT
e.nom,
e.prenom,
e.date_naissance,
COALESCE(e.commission,0)
FROM employes e ;4. Afficher les valeurs distinctes d’une colonne d’un table¶
SELECT DISTINCT
e.fonction
FROM employes e ;SELECT DISTINCT
c.pays
FROM clients c ;SELECT DISTINCT
c.ville
FROM clients c ;5. Afficher des valeurs calculées¶
SELECT
p.nom_produit AS produit,
COALESCE (p.prix_unitaire * p.unites_stock,0) AS valeur_stock
FROM produits p ;SELECT CURRENT_DATE ;SELECT
e.nom,
e.prenom,
(CURRENT_DATE - e.date_embauche)/365 AS anciennete
FROM employes e ;Questions complémentaires
Pourquoi la colonne
ancienneteest-elle de type integer et non de type float ?
Réponse
La colonne anciennete dans la requête est de type integer parce que l’opération (CURRENT_DATE - e.date_embauche) retourne un intervalle de temps en jours, et lorsque vous divisez cet intervalle par 365, PostgreSQL effectue une division entière par défaut. Cela signifie que le résultat est tronqué à la partie entière, ce qui donne un type integer. Si vous divisez par 365.0, vous obtiendrez un résultat de type float.
Comment faire pour gérer les années bissextiles ?
Réponse
SELECT
e.nom,
e.prenom,
EXTRACT(YEAR FROM AGE(CURRENT_DATE, e.date_embauche)) AS annees_experience
FROM employes e ;Cette requête utilise la fonction AGE pour calculer l’âge en années et en mois, puis extrait uniquement les années pour obtenir l’expérience en années. Cela permet de gérer correctement les années bissextiles.
6. Gérer l’affichage des données¶
SELECT
e.nom "Employé",
'gagne' "a un",
e.salaire*12 "gain annuel",
'par an' "sur 12 mois"
FROM employes e ;Questions complémentaires
Comment faire pour que tout le texte soit affiché dans une seule colonne ?
Réponse
Pour afficher tout le texte dans une seule colonne, vous pouvez utiliser la fonction CONCATENATE .
SELECT
CONCATENATE(e.nom,' gagne ',e.salaire*12,'par an') AS "Employé a un gain annuel sur 12 mois"
FROM employes e ;