Requêtes avancées

Temps estimé de réalisation : 2h30

Objectifs

Question à laquelle cette activité va permettre de répondre :

  • Suis-je capable d’identifier les mots-clefs utiles pour répondre à la questions posée ?

Objectifs pédagogiques visés :

  • Mobiliser ses connaissances en SQL pour comprendre le problème posée et écrire une requête adaptée
  • Expliquer les différents types de jointures et manipuler à bon escient le mot-clef JOIN
  • S’auto-évaluer pour évaluer la qualité de ses requêtes

Connexion à la base de données

Consultez la page Accès base de données pour savoir comment accéder à la base de données.

Pour information, le script SQL utilisé pour créer la base de données de cette activité :

Script permettant la création de la bases de données

Avertissement

Pour les requêtes SQL utilisez la documentation suivante et aucune autre : https://docs.postgresql.fr/10/index.html (il s’agit de la bonne version pour la base de données installée sur JupyterHub)

Quelques requêtes simples

Avertissement

Lors de cette activité :
- Utilisez le schéma logique graphique que vous avez réalisé lors de l’activité Requêtes simples (question n°1).
- Réutilisez le code écrit lors de l’activité Requêtes simples pour répondre à certaines des requêtes suivantes.

Question 1 : Affichez les personnes qui ont plus de trois ayants-droit.

Question 2 : Affichez les personnes qui ont exactement un ayant-droit.

Question 3 : Affichez les prescriptions de “ventoline” ayant une durée supérieure à 90 jours ou une posologie supérieure à 6 prises/jour.

Question 4 : Affichez le nom et prénom des patients qui ont visité leur médecin référent le 15 janvier 2018.

Question 5 : Affichez les patients qui n’ont jamais vu de médecin.

Question 6 : Affichez les ordonnances qui ne contiennent pas de “doliprane”.

Question 7 : Affichez les visites où a été prescrit “doliprane” ou “aspegic” (ou logique).

Question 8 : Affichez les visites où ont été prescrits “doliprane” et “aspégic”.

Question 9 : Affichez les patients qui n’ont jamais vu leur médecin référent.

Question 10 : Affichez le nom et prénom des patients et de leur médecin référent (en affichant également les patients sans médecin référent).

Avertissement

Cette requête nécessite une jointure externe utilisant la syntaxe : RIGHT JOIN, LEFT JOIN et/ou FULL OUTER JOIN (voir l’image ci-dessous).

Les différentes types de jointures en SQL (Source : http://www.abetari.com/les-jointures-sql/)

Quelques requêtes plus compliquées

Avertissement

On passe à un niveau de difficulté supérieur, ne faites pas les requêtes suivantes avant d’avoir fini et compris les précédentes.

Selon le temps qu’il vous reste, il est peut-être prioritaire de faire le TP Requêtes pour la création et la mise à jour. Parlez-en avec votre enseignant.

Question 11 : Affichez, sans doublon et par ordre alphabétique, le nom et prénom des patients qui sont ressortis d’une visite sans prescription.

Question 12 : Affichez le nom et prénom des patients qui ont vu un autre médecin que leur médecin référent plus de 3 fois en janvier 2018.

Question 13 : Affichez, pour chaque patient, les spécialités visitées.

Question 14 : Affichez les patients qui n’ont pas visité une des spécialités.

Question 15 : Affichez les patients qui ont vu des médecins de toutes les spécialités.

Après avoir réalisé le TP vous pouvez consulter la correction.