Un des scénarios les plus courants quand tu bosses avec des bases de données, c’est de préparer des données pour des rapports. Imagine : tu bosses à la fac, et ton boss (qui, évidemment, ne pige rien à SQL) te demande de sortir une liste d’étudiants avec le prénom et le nom fusionnés, et aussi la date de naissance au format DD-MM-YYYY. La mission est claire : il faut que ça soit joli. Et SQL, c’est notre pote pour ça.
Exemple 1 : Fusionner prénom et nom
On commence par fusionner le prénom (first_name) et le nom (last_name) des étudiants de notre table students.
SELECT
CONCAT(first_name, ' ', last_name) AS full_name
FROM
students;
Qu’est-ce qui se passe ici ?
CONCAT()fusionne les chaînes. On ajoute un espace entre le prénom et le nom pour que ce soit plus lisible.- Le résultat est stocké dans une nouvelle colonne
full_name.
Le résultat peut ressembler à ça :
| full_name |
|---|
| Otto Art |
| Anna Song |
| Pol Mac |
Exemple 2 : Formatage de la date
Maintenant, on va ajouter le formatage de la date de naissance à notre requête.
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM
students;
Quoi de neuf ici :
- On utilise la fonction
TO_CHAR()sur le champbirth_date. - Le format
'DD-MM-YYYY'transforme la date en un format pratique (genre :25-12-2001).
Résultat :
| full_name | formatted_birth_date |
|---|---|
| Otto Art | 12-04-1995 |
| Anna Song | 03-08-1996 |
| Pol Mac | 21-11-1997 |
Et voilà ! Tu viens de créer un rapport stylé.
Formatage pour l’export de données
Imaginons qu’un de tes collègues veuille exporter les données des commandes en CSV pour bosser dessus dans Excel. Mais les données dans la base sont pas dans le format qu’il veut, et les commerciaux exigent un affichage précis. Par exemple, au lieu du champ total_price qui donne juste le prix, ils veulent le voir comme : $100.00.
Exemple 3 : Transformer les nombres en format monétaire
On prépare les données des commandes de la table orders pour l’export :
SELECT
order_id,
TO_CHAR(total_price, 'FM$999,999.00') AS formatted_price
FROM
orders;
Qu’est-ce que fait TO_CHAR() ici ?
FM(Fill Mode) enlève les espaces en trop.$ajoute le symbole de la monnaie.999,999.00définit le format avec séparateur de milliers et deux décimales.
Résultat :
| order_id | formatted_price |
|---|---|
| 1 | $1,000.00 |
| 2 | $2,500.50 |
| 3 | $10.00 |
Maintenant, ton collègue peut importer ça dans Excel fingers in the nose et te féliciter en réunion.
Exercice final
Là, ça devient fun. On va combiner tout ce que t’as déjà appris.
Mission
Écris une requête pour la table students qui :
- Fusionne prénom et nom dans une colonne
full_name. - Transforme la date de naissance au format
DD-MM-YYYY. - Affiche l’âge de l’étudiant à la date d’aujourd’hui.
La requête ressemblera à ça :
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date,
DATE_PART('year', AGE(birth_date)) AS age
FROM
students;
Nouveaux éléments :
AGE(birth_date)renvoie l’intervalle entre aujourd’hui et la date de naissance, mais sous forme d’années, mois et jours.DATE_PART('year', AGE(birth_date))extrait juste le nombre d’années de cet intervalle.
Résultat :
| full_name | formatted_birth_date | age |
|---|---|---|
| Otto Art | 12-04-1995 | 28 |
| Anna Song | 03-08-1996 | 27 |
| Pol Mac | 21-11-1997 | 25 |
Un rapport comme ça, même les collègues les plus relous seront contents.
Formatage pour des conditions spécifiques
Parfois, on a besoin de formater les données pour créer des conditions ou filtrer. Par exemple, on va sortir les étudiants qui ont leur anniversaire ce mois-ci.
Exemple 4 : Filtrer par mois
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM
students
WHERE
DATE_PART('month', birth_date) = DATE_PART('month', CURRENT_DATE);
Comment ça marche ?
DATE_PART('month', birth_date)extrait le mois de la date de naissance.CURRENT_DATEdonne la date d’aujourd’hui. On en extrait le mois avecDATE_PART().
Combiner formatage et tri
Maintenant, on va tout mélanger et ajouter un tri. Par exemple, on va faire une liste d’étudiants triés par date de naissance.
Exemple 5 : Trier par date de naissance
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM
students
ORDER BY
birth_date ASC;
Le tri en ordre croissant ASC va d’abord afficher les plus âgés, et en ordre décroissant DESC — les plus jeunes.
Combiner avec des valeurs uniques
Pour finir — un petit défi. Imagine que notre université a des campus dans plusieurs villes, et tu dois sortir la liste des villes uniques où étudient les étudiants, mais dans l’ordre alphabétique.
Exemple 6 : Valeurs uniques et tri
SELECT DISTINCT
city
FROM
students
ORDER BY
city ASC;
Qu’est-ce que fait DISTINCT ?
Ça enlève les doublons, donc chaque ville n’apparaît qu’une seule fois dans le résultat.
Pourquoi tout ça ?
Pour le confort et le style. Quand les données sont bien présentées, c’est plus simple à utiliser, et les boss posent moins de questions.
Pour être prêt pour la vraie vie. Tu pourras générer des rapports automatiquement, gérer des exports et préparer des présentations qui claquent.
Pour augmenter ta valeur. SQL, ce n’est pas juste des données. C’est comment les rendre claires et utiles.
Utilise ce que tu viens d’apprendre pour pas juste écrire des requêtes, mais carrément créer des chefs-d’œuvre ! Dans les prochaines leçons, on va continuer à plonger dans la magie de PostgreSQL.
GO TO FULL VERSION