Chercher : SELECT et WHERE
Filtrer avec WHERE
WHERE garde seulement les lignes qui respectent une condition. C'est le masque de pandas, écrit en SQL.
SELECT date, produit, quantite
FROM ventes
WHERE vendeur = 'Paul';
| Opérateur | Sens | Exemple |
|---|---|---|
= |
égal (un seul signe égal, pas deux comme en Python) | produit = 'riz' |
<> ou != |
différent | vendeur <> 'Awa' |
<, <=, >, >= |
comparaisons | quantite >= 5 |
AND, OR, NOT |
combiner (en toutes lettres, cette fois) | vendeur = 'Paul' AND quantite >= 5 |
IN (...) |
dans une liste | produit IN ('riz', 'sucre') |
BETWEEN a AND b |
entre deux valeurs, bornes comprises | date BETWEEN '2026-02-01' AND '2026-02-28' |
Les dates au format AAAA-MM-JJ se comparent comme des textes, dans le bon ordre : date >= '2026-03-01' garde mars. Encore un avantage de ce format.
LIKE : chercher dans un texte
Calculer dans SELECT
On peut calculer une nouvelle colonne directement dans la requête, et lui donner un nom avec AS :
SELECT date, produit, quantite * prix_unitaire AS montant
FROM ventes;
Trier, limiter, dédoublonner
L'ordre des mots dans une requête est toujours le même :
SELECT colonnes
FROM table
WHERE condition
ORDER BY colonne
LIMIT nombre;
Les trois plus grosses ventes, par exemple :
SELECT date, produit, quantite * prix_unitaire AS montant
FROM ventes
ORDER BY montant DESC
LIMIT 3;
Exercice : Les grosses ventes de Paul
Écris une requête qui donne la date, le produit et la quantite des ventes de Paul d'au moins 5 articles, triées par date.
Voir une solution
import sqlite3
conn = sqlite3.connect(":memory:")
conn.executescript(open("boutique.sql", encoding="utf-8").read())
requete = """
SELECT date, produit, quantite
FROM ventes
WHERE vendeur = 'Paul' AND quantite >= 5
ORDER BY date
"""
resultat = conn.execute(requete).fetchall()
for ligne in resultat:
print(ligne)Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Le podium des montants
Écris une requête qui donne la date, le produit et le montant (quantité x prix unitaire, nommé montant) des 4 plus grosses ventes, du plus gros au plus petit.
Voir une solution
import sqlite3
conn = sqlite3.connect(":memory:")
conn.executescript(open("boutique.sql", encoding="utf-8").read())
requete = """
SELECT date, produit, quantite * prix_unitaire AS montant
FROM ventes
ORDER BY montant DESC
LIMIT 4
"""
resultat = conn.execute(requete).fetchall()
for ligne in resultat:
print(ligne)Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Les produits en s
Écris une requête qui donne la liste des produits différents dont le nom commence par s, par ordre alphabétique.
Voir une solution
import sqlite3
conn = sqlite3.connect(":memory:")
conn.executescript(open("boutique.sql", encoding="utf-8").read())
requete = """
SELECT DISTINCT produit
FROM ventes
WHERE produit LIKE 's%'
ORDER BY produit
"""
resultat = conn.execute(requete).fetchall()
for ligne in resultat:
print(ligne)Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Teste-toi
Quelle requête garde les ventes de riz ou de sucre faites par Awa ?
SELECT * FROM ventes WHERE produit = 'riz' OR produit = 'sucre' AND vendeur = 'Awa'SELECT * FROM ventes WHERE produit IN ('riz', 'sucre') AND vendeur = 'Awa'(bonne réponse)SELECT * FROM ventes WHERE produit == 'riz', 'sucre' AND vendeur == 'Awa'SELECT riz, sucre FROM ventes WHERE vendeur = 'Awa'