← Tous les exercices
Calculer un score et un niveau (faible, moyen, élevé)
Partie 2 · ★★
La qualification attribue un score selon des critères (mots-clés, montant, localisation) puis un niveau faible / moyen / élevé. Les points et seuils ci-dessous sont un exemple ajouté (le cours n'impose pas de barème) : +3 si le titre contient « modulaire » ou « préfabriqu », +2 si le budget est ≥ 500000, +1 si la localisation est « Île-de-France » ; niveau élevé si score ≥ 5, moyen si ≥ 3, sinon faible.
SQLite n'a pas de fonctions stockées ; on exprime la règle avec CASE. Un budget NULL ne rapporte aucun point. Renvoie id, score, niveau trié par id.
import sqlite3 con = sqlite3.connect(":memory:", isolation_level=None) con.executescript(""" CREATE TABLE marche(id INTEGER PRIMARY KEY, titre TEXT, budget REAL, localisation TEXT); INSERT INTO marche VALUES (1,'Classes modulaires temporaires',600000,'Île-de-France'), (2,'Voirie communale',80000,'Bretagne'), (3,'Base vie préfabriquée chantier',120000,'Occitanie'), (4,'Extension modulaire école',NULL,'Île-de-France'); """) sql = """ SELECT id, score, CASE WHEN score >= ___ THEN 'élevé' WHEN score >= ___ THEN 'moyen' ELSE 'faible' END AS niveau FROM ( SELECT id, (CASE WHEN titre LIKE '%modulaire%' OR titre LIKE '%préfabriqu%' THEN 3 ELSE 0 END) + (CASE WHEN budget >= ___ THEN 2 ELSE 0 END) + (CASE WHEN localisation = 'Île-de-France' THEN 1 ELSE 0 END) AS score FROM marche ) ORDER BY id """ rows = con.execute(sql).fetchall()
Ctrl/⌘+Entrée