J'ai une table qui n'a pas de clé primaire et je ne peux pas ajouter une - les colonnes pertinentes de celui-ci sont:Sélectionnez la plus fréquente enregistrements à l'aide de deux ou plusieurs colonnes de regroupement
Department | Category |
-------------+-----------+
0001 | A |
0002 | D |
0003 | A |
0003 | A |
0003 | C |
0004 | B |
Je veux récupérer un ligne unique pour chaque Department
, ce qui me donne le code du département et la Category
qui apparaît le plus fréquemment dans le tableau, à savoir
Department | Category |
-------------+-----------+
0001 | A |
0002 | D |
0003 | A |
0004 | B |
Quelle est la meilleure façon d'y parvenir? Ma tentative actuelle implique une Count(Category)
dans une sous-requête à partir de laquelle le Max(CountofCategory)
est alors prise, mais l'inclusion du champ Category
à ce stade signifie trop de lignes à renvoyer (puisque GROUP BY
est appliqué au niveau Category
ainsi que Department
). Dans le cas d'une égalité, je choisirais simplement le min/max de la catégorie arbitrairement. Idéalement, cela devrait être indépendant de la base de données, mais il est susceptible de fonctionner sur Oracle ou MySQL.
Vous avez déclaré que vous ne pouvez pas modifier la table en ajoutant une clé primaire, mais pouvez-vous créer des vues au-dessus de la table? –