Laden...

SQL GroupBy immer 10 Zeilen

Erstellt von akunz vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.012 Views
akunz Themenstarter:in
173 Beiträge seit 2009
vor 10 Jahren
SQL GroupBy immer 10 Zeilen

verwendetes Datenbanksystem: MSSQL

Hallo,

ich würde gerne folgendes selektieren.

Und zwar habe ich eine Tabelle, wo zum Beispiel 100 Datensätze vorhanden sind.

Tabelle:

  • Datum
  • Wert
  • ...

Jetzt würde ich gerne immer 10 Datensätze Gruppieren um eine Summe über die Spalte Wert zu bilden.

Geht sowas, wie:
SELECT SUM(Wert) FROM Tabelle ORDER BY Datum GROUP BY (immer 10 Datensätze)

F
115 Beiträge seit 2012
vor 10 Jahren

Hi,

lt. Doku

TOP (Transact-SQL)

geht das mit TOP(n), also

SELECT TOP(10) SUM(Wert) FROM Tabelle ORDER BY Datum GROUP BY...

Ist ziemlich unterschiedlich von andern DBMS

SQL - Select first 10 rows only?

Gruß
f_igy

Hinweis von gfoidl vor 10 Jahren

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 3.1.

P
660 Beiträge seit 2008
vor 10 Jahren

ich behaupte mal mein Vorredner hat die aufgabe falsch verstanden:

du nimmst die ersten zehn Datensätze, überspringst zehn, nimmst die nächsten zehn, überspringst 20, u.s.w.

dafür brauchst du zum einen Top(10) (gibts in mssql von haus aus) und zum anderen ein Skip(x+10) (gibts nicht von haus aus in mssql, aber in Linq)

der Code für den Skip würde dann so aussehen:

WITH OrderedOrders AS
(
    SELECT SalesOrderID, OrderDate,
    ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
    FROM Sales.SalesOrderHeader 
) 
SELECT * 
FROM OrderedOrders 
WHERE RowNumber BETWEEN 51 AND 60; --BETWEEN is inclusive

Quelle: How do I write LINQ's .Skip(1000).Take(100) in pure SQL?

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

akunz Themenstarter:in
173 Beiträge seit 2009
vor 10 Jahren

Danke ProGamer das ist genau das was ich gesucht habe.