J'ai une table: Je veux supprimer plus longtemps Voici la sortie attendue: (Seul def est supprimé) P> nom2 code> pour chaque groupe de nom1 code>. Plus spécifiquement, pour chaque groupe de Name1 code>, les deux premiers caractères du plus court nom2 code> doivent être identiques à la plus longue. De plus, le nombre de lignes de chaque groupe devrait être 2, c'est-à-dire que des groupes avec des rangées de plus de 2 ne sont pas pris en compte. P> name1 name2
abc de
xy cdf
xy che
mnp qpr
mnp qprt
mnp qp
4 Réponses :
Utiliser sortie p> dense_rank () code> et Union Tout code>
Vous pouvez essayer comme suit.
+-------+-------+ | name1 | name2 | +-------+-------+ | abc | de | +-------+-------+ | mnp | qp | +-------+-------+ | mnp | qpr | +-------+-------+ | mnp | qprt | +-------+-------+ | xy | cdf | +-------+-------+ | xy | che | +-------+-------+
Pouvez-vous expliquer votre réponse?
Merci pour votre solution et votre démo, PSK.
Quelque chose comme ça devrait fonctionner: Explication: p> Vous pouvez facilement ajuster la vérification de la similarité par tripdling avec le
comptez (*) sur (partition par nom1) code> compte la population de chaque nom1 code> groupe d'enregistrements li>
externe s'applique code> est utilisé pour vérifier les enregistrements ayant le même nom1 code> et similaire em> nom2 code>. Similaire ici signifie même que l'autre mais plus court. Li>
ul> où code> clause de la externe s'applique code> sous-requête. p> p>
Vous pouvez utiliser une telle instruction SELECT:
with t(name1, name2) as ( select 'abc','def' union all select 'abc','de' union all select 'xy','cdf' union all select 'xy','che' union all select 'mnp','qpr' union all select 'mnp','qprt' union all select 'mnp','qp' ), t2 as ( select name1, max(name2) as name2 from t group by name1, substring(name2,1,2) having count(*) = 2 ) select * from t except select * from t2; name1 name2 ----- ----- abc de xy cdf xy che mnp qpr mnp qprt mnp qp
Erreur: 'substr' n'est pas un nom de fonction intégré reconnu. code>
Pourquoi vous n'élevez pas "MNP QPRT" et "MNP QPR"
@Psk car il y a 3 lignes de
mnp code>.@John . . . "De plus, le nombre de lignes de chaque groupe devrait être 2, c'est-à-dire que des groupes avec des lignes de plus de 2 ne sont pas pris en compte." Vos résultats n'ont pas de sens.