ROW_NUMBER sur le résultat de la colonne

Comment puis-je countr le nombre d'occurrences dans une colonne donnée?

Suivez cet exemple. Avec une table comme celle-ci:

+----------+---------+------+ | PersonID | Name | City | +----------+---------+------+ | 1 | John | NY | | 2 | Mohit | CA | | 3 | Jay | AZ | | 4 | Roger | NY | | 5 | David | NY | | 6 | Peter | AZ | | 7 | Ana | NY | | 8 | Irina | NY | | 9 | Michael | NY | | 10 | Ken | AZ | +----------+---------+------+ 

Comment puis-je atteindre cet objective?

 +----------+---------+------+-------------+ | PersonID | Name | City | CityCounter | +----------+---------+------+-------------+ | 1 | John | NY | 1 | | 2 | Mohit | CA | 1 | | 3 | Jay | AZ | 1 | | 4 | Roger | NY | 2 | | 5 | David | NY | 3 | | 6 | Peter | AZ | 2 | | 7 | Ana | NY | 4 | | 8 | Irina | NY | 5 | | 9 | Michael | NY | 6 | | 10 | Ken | AZ | 3 | +----------+---------+------+-------------+ 

Devrai-je utiliser la fonction ROW_NUMBER sur SUM?

C'est aussi simple que ça.

 SELECT *, cityCounter = ROW_NUMBER() OVER (PARTITION BY city ORDER BY personID) FROM yourTable ORDER BY personID 

Si je comprends bien, vous voulez juste énumérer les valeurs pour chaque ville, puis sortinger par id :

 select t.* from (select t.*, row_number() over (partition by city order by personid) as CityCounter from table t ) t order by personid; 

Vous pouvez get le résultat en utilisant la fonction analytique row_number () mais il n'y a pas de SUM au-dessus? Vous pouvez lire la documentation en ligne sur l'utilisation de row_number () et sa syntaxe correcte.

Dans votre cas, vous voulez numéroter les occurrences de chaque ville, ce qui signifie que vous devez regrouper par ville (partition par ville), alors vous devez donner une logique à votre command, quelle ligne de ville devrait être la première, est-ce lorsque vient en premier?

Votre row_number ressemblerait alors à ceci:

 row_number() over(partition by city order by personID)