Text-to-SQL médicaments
Banc d'évaluation de LLM locaux sur la Base de données publique des médicaments.
Meilleure configuration
Exactitude par configuration
Part des questions dont le résultat d'exécution est identique à la référence.
Classement détaillé
| # | Configuration | Backend | Exactitude | Stricte | Exécutable | Réparées | p50 | p95 | Tokens/question | Date |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | qwen2.5-coder:7b | ollama | 68,3 % | 55,0 % | 100,0 % | 3 | 16,6 s | 35,0 s | 2904 | 2026-10-14 |
| 2 | qwen2.5-coder:7b · sans libellés exacts | ollama | 63,3 % | 51,7 % | 100,0 % | 2 | 14,7 s | 36,9 s | 2419 | 2026-10-14 |
| 3 | qwen2.5-coder:7b · zero-shot · sans libellés exacts | ollama | 63,3 % | 50,0 % | 100,0 % | 1 | 14,0 s | 24,9 s | 2134 | 2026-10-14 |
| 4 | qwen2.5-coder:7b · sans auto-correction · sans libellés exacts | ollama | 61,7 % | 50,0 % | 95,0 % | 0 | 15,2 s | 27,3 s | 2338 | 2026-10-14 |
| 5 | qwen2.5-coder:3b | ollama | 60,0 % | 43,3 % | 93,3 % | 4 | 7,5 s | 26,6 s | 3141 | 2026-10-16 |
| 6 | qwen2.5-coder:1.5b | ollama | 58,3 % | 38,3 % | 91,7 % | 5 | 3,9 s | 13,1 s | 3266 | 2026-10-14 |
| 7 | qwen2.5-coder:3b · sans libellés exacts | ollama | 56,7 % | 41,7 % | 91,7 % | 3 | 7,4 s | 25,2 s | 2661 | 2026-10-12 |
| 8 | qwen2.5-coder:1.5b · sans libellés exacts | ollama | 55,0 % | 33,3 % | 95,0 % | 3 | 3,8 s | 11,1 s | 2604 | 2026-10-14 |
| 9 | qwen2.5-coder:1.5b · sans auto-correction · sans libellés exacts | ollama | 51,7 % | 33,3 % | 88,3 % | 0 | 3,6 s | 5,8 s | 2304 | 2026-10-14 |
| 10 | qwen2.5-coder:1.5b · zero-shot · sans libellés exacts | ollama | 48,3 % | 41,7 % | 91,7 % | 2 | 3,4 s | 8,6 s | 2355 | 2026-10-14 |
Ablations
Effet de chaque facteur retiré seul, par rapport au run du même modèle qui ne diffère que par ce facteur, en points d'exactitude. La base combine exemples few-shot, une auto-correction et libellés exacts.
| Modèle | Facteur retiré | Par rapport à | Exactitude | Écart |
|---|---|---|---|---|
| qwen2.5-coder:1.5b | sans libellés exacts | base | 55,0 % | -3,3 pt |
| qwen2.5-coder:1.5b | sans auto-correction | sans libellés exacts | 51,7 % | -3,3 pt |
| qwen2.5-coder:1.5b | zero-shot | sans libellés exacts | 48,3 % | -6,7 pt |
| qwen2.5-coder:3b | sans libellés exacts | base | 56,7 % | -3,3 pt |
| qwen2.5-coder:7b | sans libellés exacts | base | 63,3 % | -5,0 pt |
| qwen2.5-coder:7b | zero-shot | sans libellés exacts | 63,3 % | 0,0 pt |
| qwen2.5-coder:7b | sans auto-correction | sans libellés exacts | 61,7 % | -1,7 pt |
Par difficulté
| qwen2.5-coder:7b | qwen2.5-coder:7b · sans libellés exacts | qwen2.5-coder:7b · zero-shot · sans libellés exacts | qwen2.5-coder:7b · sans auto-correction · sans libellés exacts | qwen2.5-coder:3b | qwen2.5-coder:1.5b | qwen2.5-coder:3b · sans libellés exacts | qwen2.5-coder:1.5b · sans libellés exacts | qwen2.5-coder:1.5b · sans auto-correction · sans libellés exacts | qwen2.5-coder:1.5b · zero-shot · sans libellés exacts | |
|---|---|---|---|---|---|---|---|---|---|---|
| Facile | 88,0 % | 84,0 % | 80,0 % | 84,0 % | 84,0 % | 84,0 % | 80,0 % | 84,0 % | 80,0 % | 68,0 % |
| Moyen | 65,4 % | 61,5 % | 65,4 % | 57,7 % | 53,8 % | 53,8 % | 46,2 % | 42,3 % | 42,3 % | 42,3 % |
| Difficile | 22,2 % | 11,1 % | 11,1 % | 11,1 % | 11,1 % | 0,0 % | 22,2 % | 11,1 % | 0,0 % | 11,1 % |
Par catégorie de question
| qwen2.5-coder:7b | qwen2.5-coder:7b · sans libellés exacts | qwen2.5-coder:7b · zero-shot · sans libellés exacts | qwen2.5-coder:7b · sans auto-correction · sans libellés exacts | qwen2.5-coder:3b | qwen2.5-coder:1.5b | qwen2.5-coder:3b · sans libellés exacts | qwen2.5-coder:1.5b · sans libellés exacts | qwen2.5-coder:1.5b · sans auto-correction · sans libellés exacts | qwen2.5-coder:1.5b · zero-shot · sans libellés exacts | |
|---|---|---|---|---|---|---|---|---|---|---|
| Comptage | 88,9 % | 88,9 % | 100,0 % | 77,8 % | 77,8 % | 100,0 % | 77,8 % | 100,0 % | 88,9 % | 88,9 % |
| Filtrage | 60,0 % | 60,0 % | 40,0 % | 40,0 % | 60,0 % | 40,0 % | 60,0 % | 40,0 % | 40,0 % | 20,0 % |
| Jointures | 14,3 % | 14,3 % | 42,9 % | 14,3 % | 0,0 % | 42,9 % | 0,0 % | 14,3 % | 14,3 % | 28,6 % |
| Agrégations | 66,7 % | 66,7 % | 50,0 % | 66,7 % | 50,0 % | 50,0 % | 50,0 % | 33,3 % | 33,3 % | 33,3 % |
| Classements (top N) | 80,0 % | 80,0 % | 80,0 % | 80,0 % | 100,0 % | 80,0 % | 100,0 % | 60,0 % | 60,0 % | 80,0 % |
| Dates | 100,0 % | 100,0 % | 100,0 % | 100,0 % | 83,3 % | 50,0 % | 66,7 % | 33,3 % | 33,3 % | 66,7 % |
| Prix et remboursement | 85,7 % | 85,7 % | 71,4 % | 85,7 % | 57,1 % | 42,9 % | 71,4 % | 57,1 % | 57,1 % | 42,9 % |
| Génériques | 57,1 % | 57,1 % | 57,1 % | 57,1 % | 42,9 % | 42,9 % | 42,9 % | 71,4 % | 57,1 % | 28,6 % |
| Avis HAS | 50,0 % | 50,0 % | 50,0 % | 50,0 % | 75,0 % | 50,0 % | 50,0 % | 50,0 % | 50,0 % | 25,0 % |
| Ruptures de stock | 75,0 % | 0,0 % | 0,0 % | 25,0 % | 75,0 % | 75,0 % | 50,0 % | 75,0 % | 75,0 % | 50,0 % |
Analyse des erreurs
Une cause par réponse fausse, la première qui s'applique de haut en bas (comparaison automatique avec la requête de référence). Survoler un nombre pour voir les questions.
| qwen2.5-coder:7b | qwen2.5-coder:3b | qwen2.5-coder:1.5b | |
|---|---|---|---|
| SQL non exécutable, même après auto-correction | – | 4 | 5 |
| Table nécessaire absente de la requête | 2 | 5 | 4 |
| Table en trop ou jointure sur d'autres colonnes | 6 | 4 | 5 |
| Agrégat différent (COUNT, COUNT DISTINCT, SUM, AVG…) | 5 | 6 | 4 |
| Valeur de filtre texte différente | 4 | 2 | 1 |
| Plus de lignes que la référence | – | 1 | 1 |
| Moins de lignes que la référence | 1 | – | – |
| Bon nombre de lignes, valeurs différentes | 1 | 2 | 5 |
| Total des réponses fausses | 19 | 24 | 25 |
Détail des questions · qwen2.5-coder:7b
| Id | Question | Difficulté | Résultat | Latence |
|---|---|---|---|---|
| q001 | Combien de spécialités pharmaceutiques sont recensées dans la base ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_specialites
FROM medicamentsRéférence SELECT COUNT(*) FROM medicaments | facile | ✓ juste | 27,8 s |
| q002 | Combien de médicaments sont actuellement commercialisés ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_specialites
FROM medicaments
WHERE etat_commercialisation = 'Commercialisée'Référence SELECT COUNT(*) FROM medicaments WHERE etat_commercialisation = 'Commercialisée' | facile | ✓ juste | 11,6 s |
| q003 | Combien de médicaments font l'objet d'une surveillance renforcée ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_specialites
FROM medicaments
WHERE surveillance_renforcee = 1Référence SELECT COUNT(*) FROM medicaments WHERE surveillance_renforcee = 1 | facile | ✓ juste | 11,2 s |
| q004 | Combien de spécialités ont été autorisées par procédure centralisée européenne ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_specialites
FROM medicaments
WHERE type_procedure_amm = 'Procédure centralisée'Référence SELECT COUNT(*) FROM medicaments WHERE type_procedure_amm = 'Procédure centralisée' | facile | ✓ juste | 12,7 s |
| q005 | Combien de médicaments ne sont plus commercialisés ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_specialites
FROM medicaments
WHERE etat_commercialisation = 'Non commercialisée'Référence SELECT COUNT(*) FROM medicaments WHERE etat_commercialisation = 'Non commercialisée' | facile | ✓ juste | 11,6 s |
| q006 | Quels médicaments ont pour titulaire le laboratoire UPSA ?SQLGénéré SELECT DISTINCT cis, denomination
FROM medicaments
WHERE titulaires = 'UPS A S'Référence SELECT denomination FROM medicaments WHERE sans_accents(titulaires) LIKE '%UPSA%' | facile | ✗ faux | 9,6 s |
| q007 | Combien de spécialités différentes contiennent du paracétamol comme substance active ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_specialites
FROM compositions
WHERE nature_composant = 'SA'
AND sans_accents(substance) LIKE '%PARACÉTAMOL%'Référence SELECT COUNT(DISTINCT cis) FROM compositions
WHERE nature_composant = 'SA' AND sans_accents(substance) LIKE '%PARACETAMOL%' | moyen | ✗ faux | 16,5 s |
| q008 | Quels médicaments s'administrent par voie cutanée ?SQLGénéré SELECT DISTINCT m.cis, m.denomination
FROM medicaments m
JOIN medicament_voies mv ON mv.cis = m.cis
WHERE sans_accents(mv.voie) LIKE '%cutanée%'Référence SELECT m.denomination FROM medicaments m
JOIN medicament_voies v ON v.cis = m.cis
WHERE v.voie = 'cutanée' | moyen | ✗ faux | 17,7 s |
| q009 | Combien de spécialités s'administrent par voie intraveineuse ?SQLGénéré SELECT COUNT(DISTINCT m.cis) AS nb_specialites
FROM medicaments m
JOIN medicament_voies mv ON mv.cis = m.cis
WHERE sans_accents(mv.voie) LIKE '%intraveineuse%'Référence SELECT COUNT(DISTINCT cis) FROM medicament_voies WHERE voie = 'intraveineuse' | facile | ✓ juste | 41,9 s |
| q010 | Quels sont les 5 laboratoires titulaires du plus grand nombre de spécialités ?SQLGénéré SELECT titulaires, COUNT(DISTINCT cis) AS nb_specialites
FROM medicaments
WHERE etat_commercialisation = 'Commercialisée'
GROUP BY titulaires
ORDER BY nb_specialites DESC
LIMIT 5Référence SELECT titulaires FROM medicaments
GROUP BY titulaires ORDER BY COUNT(*) DESC LIMIT 5 | moyen | ✗ faux | 19,0 s |
| q011 | Quel est le prix de la boîte de DOLIPRANE 1000 mg la moins chère ?SQLGénéré SELECT MIN(prix_euros) AS prix_minimal_euros
FROM presentations p
JOIN medicaments m ON m.cis = p.cis
WHERE sans_accents(m.denomination) LIKE '%DOLIPRANE 1000 MG%'Référence SELECT MIN(p.prix_euros) FROM presentations p
JOIN medicaments m ON m.cis = p.cis
WHERE sans_accents(m.denomination) LIKE 'DOLIPRANE 1000 MG%' | moyen | ✓ juste | 20,9 s |
| q012 | Quel est le prix de la boîte de médicament la plus chère ?SQLGénéré SELECT MAX(prix_euros) AS prix_max_euros
FROM presentations
WHERE prix_euros IS NOT NULLRéférence SELECT MAX(prix_euros) FROM presentations | facile | ✓ juste | 10,0 s |
| q013 | Quel médicament possède la boîte la plus chère ?SQLGénéré SELECT m.cis, m.denomination, p.prix_euros
FROM medicaments m
JOIN presentations p ON p.cis = m.cis
WHERE p.prix_euros IS NOT NULL
ORDER BY p.prix_euros DESC
LIMIT 1Référence SELECT m.denomination FROM presentations p
JOIN medicaments m ON m.cis = p.cis
WHERE p.prix_euros = (SELECT MAX(prix_euros) FROM presentations) | moyen | ✓ juste | 20,8 s |
| q014 | Combien de présentations sont remboursées à 100 % ?SQLGénéré SELECT COUNT(*) AS nb_presentations
FROM presentations
WHERE taux_remboursement = 100Référence SELECT COUNT(*) FROM presentations WHERE taux_remboursement = 100 | facile | ✓ juste | 11,0 s |
| q015 | Combien de présentations y a-t-il pour chaque taux de remboursement ?SQLGénéré SELECT taux_remboursement, COUNT(*) AS nb_presentations
FROM presentations
WHERE taux_remboursement IS NOT NULL
GROUP BY taux_remboursementRéférence SELECT taux_remboursement, COUNT(*) FROM presentations
WHERE taux_remboursement IS NOT NULL GROUP BY taux_remboursement | moyen | ✓ juste | 15,4 s |
| q016 | Quel est le prix moyen des boîtes remboursées à 65 % ?SQLGénéré SELECT ROUND(AVG(prix_euros), 2) AS prix_moyen_euros
FROM presentations
WHERE taux_remboursement = 65 AND prix_euros IS NOT NULLRéférence SELECT AVG(prix_euros) FROM presentations WHERE taux_remboursement = 65 | facile | ✓ juste | 17,3 s |
| q017 | Quels médicaments sont actuellement en rupture de stock ?SQLGénéré SELECT DISTINCT m.cis, m.denomination
FROM medicaments m
JOIN disponibilites d ON d.cis = m.cis
WHERE d.statut = 'Rupture de stock' AND d.date_mise_a_jour = (SELECT MAX(date_mise_a_jour) FROM disponibilites WHERE cis = d.cis)Référence SELECT DISTINCT m.denomination FROM disponibilites d
JOIN medicaments m ON m.cis = d.cis
WHERE d.code_statut = 1 | moyen | ✓ juste | 26,2 s |
| q018 | Combien de spécialités sont en tension d'approvisionnement ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_specialites
FROM disponibilites
WHERE statut = 'Tension d''approvisionnement'Référence SELECT COUNT(DISTINCT cis) FROM disponibilites WHERE code_statut = 2 | facile | ✓ juste | 12,8 s |
| q019 | Combien de groupes génériques différents existe-t-il ?SQLGénéré SELECT COUNT(DISTINCT id_groupe) AS nb_groupes_generiques
FROM groupes_generiquesRéférence SELECT COUNT(DISTINCT id_groupe) FROM groupes_generiques | facile | ✓ juste | 9,8 s |
| q020 | Combien de spécialités sont des princeps ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_princeps
FROM groupes_generiques
WHERE type_libelle = 'princeps'Référence SELECT COUNT(DISTINCT cis) FROM groupes_generiques WHERE type_generique = 0 | facile | ✓ juste | 12,0 s |
| q021 | Quels sont les génériques du TAHOR 10 mg ?SQLGénéré SELECT DISTINCT m.cis, m.denomination
FROM medicaments m
JOIN groupes_generiques gg ON gg.cis = m.cis
WHERE sans_accents(m.denomination) LIKE '%TAHOR 10 MG%'
AND gg.type_generique = 1Référence SELECT DISTINCT m.denomination
FROM groupes_generiques g
JOIN groupes_generiques p ON p.id_groupe = g.id_groupe AND p.type_generique = 0
JOIN medicaments mp ON mp.cis = p.cis
JOIN medicaments m ON m.cis = g.cis
WHERE g.type_generique <> 0
AND sans_accents(mp.denomination) LIKE 'TAHOR 10 MG%' | difficile | ✗ faux | 21,9 s |
| q022 | Quel laboratoire est titulaire du plus grand nombre de génériques ?SQLGénéré SELECT titulaires, COUNT(DISTINCT cis) AS nb_generiques
FROM medicaments
WHERE cis IN (
SELECT cis
FROM groupes_generiques
WHERE type_generique = 1
)
GROUP BY titulaires
ORDER BY nb_generiques DESC
LIMIT 1Référence SELECT m.titulaires FROM groupes_generiques g
JOIN medicaments m ON m.cis = g.cis
WHERE g.type_generique = 1
GROUP BY m.titulaires ORDER BY COUNT(DISTINCT g.cis) DESC LIMIT 1 | moyen | ✓ juste | 23,4 s |
| q023 | Combien de médicaments ont reçu un service médical rendu insuffisant ?SQLGénéré SELECT COUNT(DISTINCT m.cis) AS nb_specialites
FROM medicaments m
JOIN avis_smr a ON a.cis = m.cis
WHERE a.valeur_smr = 'Insuffisant'Référence SELECT COUNT(DISTINCT cis) FROM avis_smr WHERE valeur_smr = 'Insuffisant' | facile | ✗ faux | 18,5 s |
| q024 | Quels médicaments ont obtenu une ASMR de niveau I ?SQLGénéré SELECT DISTINCT m.cis, m.denomination
FROM medicaments m
JOIN avis_asmr a ON a.cis = m.cis
WHERE a.valeur_asmr = 'I'Référence SELECT DISTINCT m.denomination FROM avis_asmr a
JOIN medicaments m ON m.cis = a.cis
WHERE a.valeur_asmr = 'I' | moyen | ✓ juste | 16,0 s |
| q025 | Combien d'avis SMR la HAS a-t-elle rendus en 2020 ?SQLGénéré SELECT COUNT(*) AS nb_avis_smr
FROM avis_smr
WHERE strftime('%Y', date_avis) = '2020'Référence SELECT COUNT(*) FROM avis_smr WHERE strftime('%Y', date_avis) = '2020' | moyen | ✓ juste | 13,7 s |
| q026 | Comment se répartissent les avis SMR par niveau de service médical rendu ?SQLGénéré SELECT valeur_smr, COUNT(*) AS nb_avis
FROM avis_smr
GROUP BY valeur_smr
ORDER BY valeur_smrRéférence SELECT valeur_smr, COUNT(*) FROM avis_smr GROUP BY valeur_smr | facile | ✓ juste | 12,7 s |
| q027 | Combien de médicaments sont inscrits sur la liste I ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_medicaments
FROM conditions_prescription
WHERE condition = 'liste I'Référence SELECT COUNT(DISTINCT cis) FROM conditions_prescription WHERE condition = 'liste I' | facile | ✓ juste | 11,1 s |
| q028 | Combien de spécialités sont réservées à l'usage hospitalier ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_specialites
FROM conditions_prescription
WHERE condition = 'prescription hospitalière'Référence SELECT COUNT(DISTINCT cis) FROM conditions_prescription
WHERE sans_accents(condition) LIKE '%USAGE HOSPITALIER%' | moyen | ✗ faux | 11,2 s |
| q029 | Combien de médicaments d'intérêt thérapeutique majeur sont recensés ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_mitm
FROM mitmRéférence SELECT COUNT(DISTINCT cis) FROM mitm | facile | ✓ juste | 8,3 s |
| q030 | Quel est le code ATC du LEVOTHYROX ?SQLGénéré SELECT code_atc
FROM mitm
WHERE sans_accents(denomination) LIKE '%LEVOTHYROX%'Référence SELECT DISTINCT t.code_atc FROM mitm t
JOIN medicaments m ON m.cis = t.cis
WHERE sans_accents(m.denomination) LIKE 'LEVOTHYROX%' | moyen | ✗ faux | 10,5 s |
| q031 | Combien de médicaments d'intérêt thérapeutique majeur sont des antibiotiques à usage systémique (code ATC J01) ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_mitm
FROM mitm
WHERE sans_accents(code_atc) LIKE 'J01%'Référence SELECT COUNT(DISTINCT cis) FROM mitm WHERE code_atc LIKE 'J01%' | moyen | ✓ juste | 14,7 s |
| q032 | Combien de médicaments ont obtenu leur AMM en 2020 ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_medicaments
FROM medicaments
WHERE strftime('%Y', date_amm) = '2020'Référence SELECT COUNT(*) FROM medicaments WHERE strftime('%Y', date_amm) = '2020' | facile | ✓ juste | 13,2 s |
| q033 | Quelle est la date d'AMM la plus ancienne parmi les médicaments commercialisés ?SQLGénéré SELECT MIN(date_amm) AS date_amm_min
FROM medicaments
WHERE etat_commercialisation = 'Commercialisée'Référence SELECT MIN(date_amm) FROM medicaments
WHERE etat_commercialisation = 'Commercialisée' | facile | ✓ juste | 12,3 s |
| q034 | Combien d'AMM ont été délivrées chaque année depuis 2020 ?SQLGénéré SELECT strftime('%Y', date_amm) AS annee, COUNT(DISTINCT cis) AS nb_amm
FROM medicaments
WHERE date_amm >= '2020-01-01'
GROUP BY annee
ORDER BY anneeRéférence SELECT strftime('%Y', date_amm) AS annee, COUNT(*) FROM medicaments
WHERE date_amm >= '2020-01-01' GROUP BY annee | moyen | ✓ juste | 20,9 s |
| q035 | Combien de spécialités contiennent au moins trois substances actives différentes ?SQLGénéré SELECT COUNT(DISTINCT m.cis) AS nb_specialites
FROM medicaments m
JOIN compositions c ON c.cis = m.cis
WHERE c.nature_composant = 'SA'
GROUP BY m.cis
HAVING COUNT(DISTINCT c.substance) >= 3Référence SELECT COUNT(*) FROM (
SELECT cis FROM compositions WHERE nature_composant = 'SA'
GROUP BY cis HAVING COUNT(DISTINCT code_substance) >= 3
) | difficile | ✗ faux | 48,6 s |
| q036 | Quelle substance active entre dans la composition du plus grand nombre de spécialités ?SQLGénéré SELECT c.substance, COUNT(DISTINCT m.cis) AS nb_specialites
FROM compositions c
JOIN medicaments m ON c.cis = m.cis
WHERE c.nature_composant = 'SA'
GROUP BY c.substance
ORDER BY nb_specialites DESC
LIMIT 1Référence SELECT substance FROM compositions WHERE nature_composant = 'SA'
GROUP BY substance ORDER BY COUNT(DISTINCT cis) DESC LIMIT 1 | moyen | ✓ juste | 23,9 s |
| q037 | Quelles sont les 5 substances actives présentes dans le plus de spécialités ?SQLGénéré SELECT c.substance, COUNT(DISTINCT m.cis) AS nb_specialites
FROM compositions c
JOIN medicaments m ON c.cis = m.cis
WHERE c.nature_composant = 'SA'
GROUP BY c.substance
ORDER BY nb_specialites DESC
LIMIT 5Référence SELECT substance FROM compositions WHERE nature_composant = 'SA'
GROUP BY substance ORDER BY COUNT(DISTINCT cis) DESC LIMIT 5 | moyen | ✓ juste | 23,7 s |
| q038 | Combien de présentations sont agréées aux collectivités ?SQLGénéré SELECT COUNT(cip13) AS nb_presentations_agrees
FROM presentations
WHERE agrement_collectivites = 1Référence SELECT COUNT(*) FROM presentations WHERE agrement_collectivites = 1 | facile | ✓ juste | 11,7 s |
| q039 | Quel est le prix moyen d'une boîte de médicament à base de metformine ?SQLGénéré SELECT AVG(prix_euros) AS prix_moyen_euros
FROM presentations p
JOIN compositions c ON c.cis = p.cis
WHERE sans_accents(c.substance) LIKE '%METFORMINE%'Référence SELECT AVG(prix_euros) FROM presentations
WHERE cis IN (
SELECT cis FROM compositions
WHERE nature_composant = 'SA' AND sans_accents(substance) LIKE '%METFORMINE%'
) | difficile | ✗ faux | 40,1 s |
| q040 | Combien de médicaments génériques ont au moins une présentation remboursée ?SQLGénéré SELECT COUNT(DISTINCT m.cis) AS nb_medicaments
FROM medicaments m
JOIN presentations p ON p.cis = m.cis
WHERE p.taux_remboursement IS NOT NULLRéférence SELECT COUNT(DISTINCT g.cis) FROM groupes_generiques g
JOIN presentations p ON p.cis = g.cis
WHERE g.type_generique = 1 AND p.taux_remboursement IS NOT NULL | difficile | ✗ faux | 17,5 s |
| q041 | Combien de substances actives distinctes entrent dans la composition de spécialités commercialisées en rupture ou en tension d'approvisionnement ?SQLGénéré SELECT COUNT(DISTINCT c.substance) AS nb_substances
FROM compositions c
JOIN medicaments m ON m.cis = c.cis
JOIN disponibilites d ON d.cis = m.cis
WHERE c.nature_composant = 'SA'
AND m.etat_commercialisation = 'Commercialisée'
AND (d.statut = 'Rupture de stock' OR d.statut = 'Tension d''approvisionnement')Référence SELECT COUNT(DISTINCT c.substance) FROM medicaments m
JOIN disponibilites d ON d.cis = m.cis
JOIN compositions c ON c.cis = m.cis
WHERE d.code_statut IN (1, 2) AND m.etat_commercialisation = 'Commercialisée'
AND c.nature_composant = 'SA' | difficile | ✓ juste | 34,8 s |
| q042 | Combien de présentations de médicaments sous surveillance renforcée sont remboursées à 65 % ?SQLGénéré SELECT COUNT(DISTINCT p.cip13) AS nb_presentations
FROM presentations p
JOIN medicaments m ON m.cis = p.cis
WHERE m.surveillance_renforcee = 1 AND p.taux_remboursement = 65Référence SELECT COUNT(*) FROM presentations p
JOIN medicaments m ON m.cis = p.cis
WHERE m.surveillance_renforcee = 1 AND p.taux_remboursement = 65 | moyen | ✓ juste | 21,7 s |
| q043 | Combien de spécialités possèdent plusieurs voies d'administration ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_specialites
FROM medicament_voies
GROUP BY cis
HAVING COUNT(DISTINCT voie) > 1Référence SELECT COUNT(*) FROM (
SELECT cis FROM medicament_voies GROUP BY cis HAVING COUNT(*) > 1
) | moyen | ✗ faux | 14,1 s |
| q044 | Quelles sont les 5 voies d'administration les plus fréquentes ?SQLGénéré SELECT voie, COUNT(*) AS nb_specialites
FROM medicament_voies
GROUP BY voie
ORDER BY nb_specialites DESC
LIMIT 5Référence SELECT voie FROM medicament_voies
GROUP BY voie ORDER BY COUNT(*) DESC LIMIT 5 | moyen | ✓ juste | 14,0 s |
| q045 | Combien de titulaires d'AMM différents y a-t-il dans la base ?SQLGénéré SELECT COUNT(DISTINCT sans_accents(titulaires)) AS nb_titulaires
FROM medicaments
WHERE etat_commercialisation = 'Commercialisée'Référence SELECT COUNT(DISTINCT titulaires) FROM medicaments | facile | ✗ faux | 14,7 s |
| q046 | Combien de spécialités compte chaque statut d'AMM ?SQLGénéré SELECT statut_amm, COUNT(DISTINCT cis) AS nb_specialites
FROM medicaments
GROUP BY statut_ammRéférence SELECT statut_amm, COUNT(*) FROM medicaments GROUP BY statut_amm | facile | ✓ juste | 11,7 s |
| q047 | Combien de princeps ont pour titulaire un laboratoire Sanofi ?SQLGénéré SELECT COUNT(DISTINCT g.id_groupe) AS nb_princeps
FROM groupes_generiques g
JOIN medicaments m ON m.cis = g.cis
WHERE g.type_generique = 0
AND sans_accents(m.titulaires) LIKE '%SANOFI%'Référence SELECT COUNT(DISTINCT m.cis) FROM medicaments m
JOIN groupes_generiques g ON g.cis = m.cis
WHERE g.type_generique = 0 AND sans_accents(m.titulaires) LIKE '%SANOFI%' | moyen | ✓ juste | 23,3 s |
| q048 | En moyenne, combien les honoraires de dispensation ajoutent-ils au prix d'une boîte remboursée ?SQLGénéré SELECT AVG(honoraires_euros) AS moyenne_honoraires_euros
FROM presentations
WHERE taux_remboursement IS NOT NULLRéférence SELECT AVG(prix_ttc_euros - prix_euros) FROM presentations
WHERE taux_remboursement IS NOT NULL
AND prix_ttc_euros IS NOT NULL AND prix_euros IS NOT NULL | difficile | ✓ juste | 15,0 s |
| q049 | Quels médicaments à base de sémaglutide sont commercialisés ?SQLGénéré SELECT DISTINCT m.cis, m.denomination
FROM medicaments m
JOIN compositions c ON c.cis = m.cis
WHERE c.nature_composant = 'SA'
AND sans_accents(c.substance) LIKE '%SÉMAGLUTIDE%'Référence SELECT DISTINCT m.denomination FROM medicaments m
JOIN compositions c ON c.cis = m.cis
WHERE m.etat_commercialisation = 'Commercialisée'
AND sans_accents(c.substance) LIKE '%SEMAGLUTIDE%' | moyen | ✗ faux | 22,3 s |
| q050 | Combien de présentations ont été déclarées en commercialisation depuis le 1er janvier 2024 ?SQLGénéré SELECT COUNT(cip13) AS nb_presentations
FROM presentations
WHERE date_declaration >= '2024-01-01'Référence SELECT COUNT(*) FROM presentations WHERE date_declaration >= '2024-01-01' | facile | ✓ juste | 13,8 s |
| q051 | Pour chaque niveau d'ASMR, combien de médicaments distincts l'ont obtenu ?SQLGénéré SELECT avis_asmr.valeur_asmr, COUNT(DISTINCT avis_asmr.cis) AS nb_medicaments
FROM avis_asmr
GROUP BY avis_asmr.valeur_asmrRéférence SELECT valeur_asmr, COUNT(DISTINCT cis) FROM avis_asmr GROUP BY valeur_asmr | moyen | ✓ juste | 16,6 s |
| q052 | Combien de médicaments ont à la fois un SMR important et une ASMR de niveau I ou II ?SQLGénéré SELECT COUNT(DISTINCT m.cis) AS nb_specialites
FROM medicaments m
JOIN avis_smr a_smr ON a_smr.cis = m.cis
JOIN avis_asmr a_asmr ON a_asmr.cis = m.cis
WHERE a_smr.valeur_smr = 'Important'
AND (a_asmr.valeur_asmr = 'I' OR a_asmr.valeur_asmr = 'II')Référence SELECT COUNT(DISTINCT s.cis) FROM avis_smr s
WHERE s.valeur_smr = 'Important'
AND s.cis IN (SELECT cis FROM avis_asmr WHERE valeur_asmr IN ('I', 'II')) | difficile | ✗ faux | 34,6 s |
| q053 | Quel pourcentage des présentations est remboursé ?SQLGénéré SELECT ROUND(SUM(CASE WHEN taux_remboursement IS NOT NULL THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) AS pourcentage_remboursement
FROM presentationsRéférence SELECT 100.0 * SUM(taux_remboursement IS NOT NULL) / COUNT(*) FROM presentations | moyen | ✓ juste | 19,2 s |
| q054 | Combien de spécialités commercialisées se présentent sous forme de comprimé pelliculé ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_specialites
FROM medicaments
WHERE etat_commercialisation = 'Commercialisée'
AND forme_pharmaceutique = 'comprimé pelliculé'Référence SELECT COUNT(*) FROM medicaments
WHERE etat_commercialisation = 'Commercialisée'
AND forme_pharmaceutique = 'comprimé pelliculé' | facile | ✓ juste | 18,2 s |
| q055 | Quelle est la forme pharmaceutique la plus fréquente ?SQLGénéré SELECT forme_pharmaceutique, COUNT(*) AS nb_specialites
FROM medicaments
GROUP BY forme_pharmaceutique
ORDER BY nb_specialites DESC
LIMIT 1Référence SELECT forme_pharmaceutique FROM medicaments
GROUP BY forme_pharmaceutique ORDER BY COUNT(*) DESC LIMIT 1 | facile | ✓ juste | 15,2 s |
| q056 | Combien de présentations existent pour l'ensemble des spécialités DOLIPRANE ?SQLGénéré SELECT COUNT(DISTINCT p.cip13) AS nb_presentations
FROM medicaments m
JOIN presentations p ON p.cis = m.cis
WHERE sans_accents(m.denomination) LIKE '%DOLIPRANE%'Référence SELECT COUNT(*) FROM presentations p
JOIN medicaments m ON m.cis = p.cis
WHERE sans_accents(m.denomination) LIKE 'DOLIPRANE%' | moyen | ✗ faux | 19,3 s |
| q057 | Combien de ruptures de stock ont débuté en 2023 ?SQLGénéré SELECT COUNT(DISTINCT cis) AS nb_ruptures
FROM disponibilites
WHERE strftime('%Y', date_debut) = '2023' AND statut = 'Rupture de stock'Référence SELECT COUNT(*) FROM disponibilites
WHERE code_statut = 1 AND strftime('%Y', date_debut) = '2023' | moyen | ✗ faux | 17,6 s |
| q058 | Combien de ruptures ou de tensions d'approvisionnement ont commencé depuis le 1er janvier 2026 ?SQLGénéré SELECT COUNT(*) AS nb_ruptures_tensions
FROM disponibilites
WHERE date_debut >= '2026-01-01' AND (statut = 'Tension d''approvisionnement' OR statut = 'Rupture de stock')Référence SELECT COUNT(*) FROM disponibilites WHERE code_statut IN (1, 2) AND date_debut >= '2026-01-01' | moyen | ✓ juste | 22,3 s |
| q059 | Quel pourcentage des spécialités commercialisées sont des génériques ?SQLGénéré SELECT ROUND(COUNT(DISTINCT CASE WHEN g.type_generique = 1 THEN m.cis ELSE NULL END) * 100.0 / COUNT(DISTINCT m.cis), 2) AS pourcentage_generiques
FROM medicaments m
JOIN groupes_generiques g ON g.cis = m.cis
WHERE m.etat_commercialisation = 'Commercialisée'Référence SELECT 100.0 * COUNT(DISTINCT g.cis) / (
SELECT COUNT(*) FROM medicaments WHERE etat_commercialisation = 'Commercialisée'
)
FROM groupes_generiques g
JOIN medicaments m ON m.cis = g.cis
WHERE g.type_generique = 1 AND m.etat_commercialisation = 'Commercialisée' | difficile | ✗ faux | 29,6 s |
| q060 | Combien de spécialités associent paracétamol et codéine ?SQLGénéré SELECT COUNT(DISTINCT m.cis) AS nb_specialites
FROM medicaments m
JOIN compositions c ON c.cis = m.cis
WHERE c.nature_composant = 'SA'
AND sans_accents(c.substance) IN ('PARACÉTAMOL', 'CODÉINE')Référence SELECT COUNT(*) FROM (
SELECT cis FROM compositions WHERE nature_composant = 'SA'
GROUP BY cis
HAVING SUM(sans_accents(substance) LIKE '%PARACETAMOL%') > 0
AND SUM(sans_accents(substance) LIKE '%CODEINE%') > 0
) | difficile | ✗ faux | 24,6 s |