Ich möchte das nutzen ROW_NUMBER()
, um ...
- Um das
max(ROW_NUMBER())
-> Oder ich denke, dies wäre auch die Anzahl aller Zeilen
Ich habe versucht:
SELECT max(ROW_NUMBER() OVER(ORDER BY UserId)) FROM Users
aber es schien nicht zu funktionieren ...
- Um
ROW_NUMBER()
eine bestimmte Information zu verwenden, dh. Wenn ich einen Namen habe und wissen möchte, aus welcher Zeile der Name stammt.
Ich nehme an, es wäre etwas Ähnliches wie das, was ich für # 1 versucht habe
SELECT ROW_NUMBER() OVER(ORDER BY UserId) From Users WHERE UserName='Joe'
aber das hat auch nicht funktioniert ...
Irgendwelche Ideen?
sql
sql-server
row-number
Spender
quelle
quelle
Obwohl ich anderen zustimme, dass Sie
count()
die Gesamtzahl der Zeilen ermitteln können, können Sie Folgendes verwendenrow_count()
:So erhalten Sie die Gesamtzahl der Zeilen:
So erhalten Sie die Zeilennummern mit dem Namen Matt:
Sie können die erste oder letzte Zeile für Matt weiter verwenden
min(rownum)
odermax(rownum)
abrufen.Dies waren sehr einfache Implementierungen von
row_number()
. Sie können es für komplexere Gruppierungen verwenden. Überprüfen Sie meine Antwort zur erweiterten Gruppierung, ohne eine Unterabfrage zu verwendenquelle
order by X
? Mit anderen Worten, wie sollteX
bestimmt werden? Vielen Dank!order by X
ist die Reihenfolge, in der Sie die Reihenfolge bestimmen, in der die Zeilen zugewiesen werdenROW_NUMBERS()
. Denken Sie daran, dass Tabellen in relationalen Datenbanken trotz ihres Namens keine formale Reihenfolge haben. Wenn Sie also eine Zeile "1" oder "10" oder "1337" aufrufen möchten, müssen Sie sie zuerst mit einerORDER BY
Klausel sortieren ist derjenige, der in dieOVER (ORDER BY X)
Klausel geht.Wenn Sie die Gesamtzahl der Zeilen der Tabelle zurückgeben müssen, können Sie eine alternative Methode zur
SELECT COUNT(*)
Anweisung verwenden.Da
SELECT COUNT(*)
ein vollständiger Tabellenscan durchgeführt wird, um die Zeilenanzahl zurückzugeben, kann eine große Tabelle sehr lange dauern.sysindexes
In diesem Fall können Sie stattdessen die Systemtabelle verwenden. Es gibt eineROWS
Spalte, die die Gesamtzahl der Zeilen für jede Tabelle in Ihrer Datenbank enthält. Sie können die folgende select-Anweisung verwenden:Dadurch wird die Zeit, die Ihre Abfrage benötigt, drastisch reduziert.
quelle
ROW_NUMBER()
Gibt eine eindeutige Nummer für jede Zeile zurück, die mit 1 beginnt. Sie können diese einfach verwenden, indem Sie einfach schreiben:Sie können den Unterschied zwischen finden
Row_number()
,Rank()
undDense_Rank()
hier .quelle
Sie können dies verwenden, um den ersten Datensatz abzurufen, in dem die Klausel enthalten ist
quelle
quelle
TABLE
oderVIEW
Schlüsselwort vorhanden ist ... aberSELECT
sicher! -)Kann hier nicht mit der Frage zusammenhängen. Aber ich fand, dass es nützlich sein könnte, wenn man
ROW_NUMBER
-quelle
quelle
Wenn Sie dafür unbedingt ROW_NUMBER verwenden möchten (anstelle von count (*)), können Sie immer Folgendes verwenden:
quelle
Sie können das
Row_Number
Ergebnis der Abfrage begrenzen.Beispiel:
- Mit der obigen Abfrage erhalte ich SEITE 1 der Ergebnisse von
TABLENAME
.quelle
Müssen Sie eine virtuelle Tabelle mithilfe von erstellen
WITH table AS
, was in der angegebenen Abfrage erwähnt wird.Mithilfe dieser virtuellen Tabelle können Sie die CRUD-Operation wrt ausführen
row_number
.ABFRAGE:
Sie können verwenden
INSERT
,UPDATE
oderDELETE
im letzten Satz von trotzSELECT
.quelle
Die SQL-Funktion Row_Number () dient zum Sortieren und Zuweisen einer Bestellnummer zu Datenzeilen im zugehörigen Datensatz. So wird es verwendet, um Zeilen zu nummerieren, zum Beispiel um die Top 10 Zeilen mit dem höchsten Bestellbetrag zu identifizieren oder um die Bestellung jedes Kunden mit dem höchsten Bestellbetrag zu identifizieren usw.
Wenn Sie das Dataset sortieren und jede Zeile nummerieren möchten, indem Sie sie in Kategorien aufteilen, verwenden wir Row_Number () mit Partition By-Klausel. Zum Beispiel das Sortieren von Bestellungen jedes Kunden in sich selbst, wobei der Datensatz alle Bestellungen usw. enthält.
Aber so wie ich es verstehe, möchten Sie die Anzahl der Zeilen berechnen, die durch eine Spalte gruppiert sind. Um die Anforderung zu visualisieren, können Sie die Aggregationsfunktion COUNT () mit der Partition By-Klausel verwenden , wenn Sie die Anzahl aller Bestellungen des zugehörigen Kunden als separate Spalte neben den Bestellinformationen anzeigen möchten
Beispielsweise,
quelle
Diese Abfrage:
gibt alle Zeilen zurück, in denen das
UserName
ist,'Joe'
WENN Sie keine habenUserName='Joe'
Sie werden in der Reihenfolge von aufgelistet
UserID
und dasrow_number
Feld beginnt mit 1 und erhöht sich, wie viele Zeilen auch immer enthaltenUserName='Joe'
Wenn es für Sie nicht funktioniert, hat Ihr
WHERE
Befehl ein Problem ODER es ist keinUserID
in der Tabelle. Überprüfen Sie die Rechtschreibung für beide FelderUserID
undUserName
.quelle