Je veux utiliser ROW_NUMBER()
pour obtenir ...
- Pour obtenir le
max(ROW_NUMBER())
-> Ou je suppose que ce serait également le nombre de toutes les lignes
J'ai essayé de faire:
SELECT max(ROW_NUMBER() OVER(ORDER BY UserId)) FROM Users
mais cela ne semblait pas fonctionner ...
- Pour obtenir en
ROW_NUMBER()
utilisant une information donnée, c'est à dire. si j'ai un nom et que je veux savoir de quelle ligne le nom vient.
Je suppose que ce serait quelque chose de similaire à ce que j'ai essayé pour # 1
SELECT ROW_NUMBER() OVER(ORDER BY UserId) From Users WHERE UserName='Joe'
mais cela n'a pas fonctionné non plus ...
Des idées?
la source
Bien que je sois d'accord avec d'autres que vous pourriez utiliser
count()
pour obtenir le nombre total de lignes, voici comment vous pouvez utiliser lerow_count()
:Pour obtenir le nombre total de lignes:
Pour obtenir les numéros de ligne où le nom est Matt:
Vous pouvez également utiliser
min(rownum)
oumax(rownum)
pour obtenir respectivement la première ou la dernière ligne de Matt.Il s'agissait d'implémentations très simples de
row_number()
. Vous pouvez l'utiliser pour des regroupements plus complexes. Consultez ma réponse sur le regroupement avancé sans utiliser de sous-requêtela source
order by X
? En d'autres termes, comment doit-X
on déterminer? Merci!order by X
l'ordre que vous utiliserez pour déterminer l'ordre dans lequel les lignes seront attribuéesROW_NUMBERS()
. N'oubliez pas que les tables des bases de données relationnelles, malgré leur nom, n'ont pas d'ordre formel, donc si vous voulez appeler une ligne «1» ou «10» ou «1337», vous devez d'abord les ordonner à l'aide d'uneORDER BY
clause, qui est celui qui entre dans l'OVER (ORDER BY X)
article.Si vous devez renvoyer le nombre total de lignes de la table, vous pouvez utiliser un autre moyen de l'
SELECT COUNT(*)
instruction.Dans la mesure où
SELECT COUNT(*)
une analyse complète de la table renvoie le nombre de lignes, cela peut prendre très longtemps pour une table volumineuse. Vous pouvez utiliser lasysindexes
table système à la place dans ce cas. UneROWS
colonne contient le nombre total de lignes pour chaque table de votre base de données. Vous pouvez utiliser l'instruction de sélection suivante:Cela réduira considérablement la durée de votre requête.
la source
ROW_NUMBER()
renvoie un numéro unique pour chaque ligne commençant par 1. Vous pouvez facilement l'utiliser en écrivant simplement:Vous pouvez trouver la différence entre
Row_number()
,Rank()
etDense_Rank()
ici .la source
Vous pouvez l'utiliser pour obtenir le premier enregistrement où a la clause
la source
la source
TABLE
ouVIEW
mot-clé est autour ... maisSELECT
bien sûr! -)Peut ne pas être lié à la question ici. Mais j'ai trouvé que cela pouvait être utile lors de l'utilisation
ROW_NUMBER
-la source
la source
Si vous voulez absolument utiliser ROW_NUMBER pour cela (au lieu de count (*)), vous pouvez toujours utiliser:
la source
Vous pouvez utiliser
Row_Number
pour le résultat de la requête de limite.Exemple:
- Avec la requête ci-dessus, j'obtiendrai la PAGE 1 des résultats
TABLENAME
.la source
Besoin de créer une table virtuelle en utilisant
WITH table AS
, ce qui est mentionné dans une requête donnée.En utilisant cette table virtuelle, vous pouvez exécuter l'opération CRUD
row_number
.REQUETE:
Vous pouvez utiliser
INSERT
,UPDATE
ouDELETE
dans la dernière phrase par malgréSELECT
.la source
La fonction SQL Row_Number () consiste à trier et à attribuer un numéro d'ordre aux lignes de données dans le jeu d'enregistrements associé. Il est donc utilisé pour numéroter les lignes, par exemple pour identifier les 10 premières lignes qui ont le montant de commande le plus élevé ou pour identifier la commande de chaque client qui est le montant le plus élevé, etc.
Si vous souhaitez trier l'ensemble de données et numéroter chaque ligne en les séparant en catégories, nous utilisons Row_Number () avec la clause Partition By. Par exemple, trier les commandes de chaque client en lui-même où l'ensemble de données contient toutes les commandes, etc.
Mais si je comprends bien, vous voulez calculer le nombre de lignes de regroupées par une colonne. Pour visualiser l'exigence, si vous souhaitez voir le nombre de toutes les commandes du client associé sous forme de colonne distincte en plus des informations de commande, vous pouvez utiliser la fonction d'agrégation COUNT () avec la clause Partition By
Par exemple,
la source
Cette requête:
renverra toutes les lignes où le
UserName
est'Joe'
sauf si vous n'avez pasUserName='Joe'
Ils seront répertoriés dans l'ordre de
UserID
et lerow_number
champ commencera par 1 et augmentera selon le nombre de lignes contenantUserName='Joe'
Si cela ne fonctionne pas pour vous, votre
WHERE
commande a un problème OU il n'yUserID
en a pas dans le tableau. Vérifiez l'orthographe des deux champsUserID
etUserName
.la source