J'ai deux tables en question. J'essaie de trouver les noms des pilotes qui avaient plus de 3 emplacements affectés en 2018.
Table TaxiPilot P>
p_fname p_lname count(a.p_id) Joe Smith 5
5 Réponses :
Qu'essayez-vous de faire à ce sujet?:
Select count(a.p_id) from assignment where AssignDate between "01/01/2018" and "12/31/2018" group by a.p_id having count(a.p_id) > 3
Bonjour, j'essaie de tirer leur prénom et son nom de famille en plus du nombre de fois où ils ont été embauchés.
Dans ce cas, ce serait quelque chose comme ça (je ne l'ai pas testé):
Ceci est sur la bonne voie, cependant, le comte apparaît comme null.
Je pense que la simple agrégation fonctionnera si vous lancez les dates.
dbfiddle
with paste as ( select p_id, count(a.p_id) from assignment group by 1 having count(*) > 3 ) select p_lname, p_fname, max(HireNo) from taxiPilot where p_id in (select p_id from paste) group by 1, 2 Haven't tried though.
Premièrement, vous étiez sur la bonne idée, mais votre sous-requête n'était pas corrélée à un seul pilote. Vous venez de saisir toutes les missions entre la date, mais n'avait aucune corrélation dont pilote. Donc, vous auriez pu avoir un compte de 273 à travers tous les pilotes.
Au lieu de cela, vous pouvez ajouter l'identifiant pilote dans la sous-requête, puis rejoindre en dehors de cela. De cette façon, vous n'essayez pas de tirer tous les pilotes. Obtenez ceux qui qualifiés, puis obtenez les noms. P>
select tp.p_fname, tp.p_lname, PQ.NumHires from ( select a.p_id, count(*) NumHires from Assignment a where a.AssignDate between '2018-01-01' and '2018-12-31' group by a.p_id having count(*) > 3) PQ JOIN taxiPilot tp on PQ.p_id = tp.p_id order by tp.p_lname, tp.p_fname