Maison > Questions et réponses > le corps du texte
Merci de m'avoir aidé, j'apprends encore SQL. J'ai une table principale appelée JEDI et j'essaie d'obtenir des informations spécifiques sur l'utilisation des conditions Inner JOIN et Where. Plus précisément, je souhaite obtenir le nombre de JEDI qui ont visité une planète spécifique entre des dates spécifiques et leur niveau.
Je souhaite ensuite filtrer en utilisant un Inner JOIN sur la même table et me montrer uniquement les résultats pour les JEDI qui ont plus d'un padawan sur cette planète particulière. Je pense que la deuxième condition me déstabilise. J'ai collé le code que j'ai utilisé et l'exemple de tableau de données
Mon résultat devrait juste être 2, Maître Obi-Wan est le seul à répondre aux critères
SELECT COUNT(jedi.jedi_id),jedi.rank_id FROM jedi WHERE jedi.date >='2022-01-01' AND jedi.date <='2022-06-31' AND jedi.planet='Tatoine' INNER JOIN jedi ON jedi.jedi_id WHERE COUNT(jedi.padawan)>=2 GROUP BY jedi.rank_id
P粉8785105512024-02-04 16:59:14
Tout d'abord, vous devez regrouper les colonnes et utiliser HAVING COUNT
pour compter les valeurs en double.
SELECT COUNT(jedi.jedi_id),jedi.rank_id FROM jedi WHERE jedi.date BETWEEN '2022-01-01' AND '2022-06-31' AND jedi.planet='Tatoine' GROUP BY jedi.jedi_id, jedi.rank_id HAVING COUNT(jedi.jedi_id) > 1
Remarque : Cette fonctionnalité ne fonctionne que pour chaque jedi_id
具有唯一值 jedi.padawan
. Cette requête convient à ces scénarios.
Cependant, vous pouvez calculer une jedi.padawan
的条件来改进查询,以便每个 jedi.jedi_id< 上重复出现
jedi.padawan
valeur/code> unique en en ajoutant une autre qui ne sera pas incluse
SELECT COUNT(jedi.jedi_id),jedi.rank_id FROM jedi WHERE jedi.date BETWEEN '2022-01-01' AND '2022-06-31' AND jedi.planet='Tatoine' GROUP BY jedi.jedi_id, jedi.rank_id HAVING COUNT(jedi.jedi_id) > 1 AND COUNT (DISTINCT jedi.padawan) > 1
P粉2486022982024-02-04 14:18:54
Vous pouvez remplacer ceci par must INNER JOIN jedi ON jedi.jedi_id WHERE COUNT(jedi.padawan)>=2