Scénario: Il y a 2 colonnes dans le tableau avec les données données dans l'exemple ci-dessous. Il est possible que la table comporte plusieurs lignes pour la même valeur de colonne «a». Dans l'exemple, Considérant le 'a' ...

3
Harsh Joshi 15 mars 2021 à 09:37

1 réponse

Meilleure réponse

C'est ainsi que j'obtiendrais les données dont vous avez besoin.

select t1.a, max(t1.b) 
  from (select a, b, count(1) over(partition by t1.a) cnt from t1) t1
 where t1.a = floor(t1.b) or cnt = 1
 group by t1.a ,cnt;

Il n'a qu'un seul appel de procédure et peut donc s'exécuter beaucoup plus rapidement

Et veuillez noter que la clause "union" ajoute non seulement deux ensembles de données, mais supprime également les doublons. La suppression des doublons entraîne des vérifications supplémentaires entre les ensembles de données et entraîne par conséquent des problèmes de performances.

Il est dans la plupart des cas préférable d'utiliser "union all" qui ne vérifie pas les doublons

1
ekochergin 15 mars 2021 à 07:04