![]() |
Datenbank: MySQL • Version: 5.0 • Zugriff über: microOLAP DAC
ältester Eintrag - Summieren
Hallo!
Ich beiß mir gerade an einem SQL-Statement die Zähne aus. Vielleicht hat ja jemand eine Idee für mich. Ich habe eine Tabelle, wo Rechnungsinformationen gespeichert werden: Rechnungsnummer, KundenNr, Datum, Gesamtpreis, etc. Ich möchte gerne eine Liste haben, wo alle Jahre der ältesten Einträge stehen mit Summe, d.h. z.B. 2000 100 Neu-Kunden (die in diesem Jahr als erstes bestellt haben). Die dürfen dann auch nicht mehr in den Jahre auftauchen. Man hat quasi eine Neukunden-Liste anhand der Jahre. Vielen Dank im Voraus! Stephan |
AW: ältester Eintrag - Summieren
da die meisten Glaskugeln wegen einer Rückrufaktion des Herstellers nicht verfügbar sind, wäre es gut, ein paar mehr Informationen zu bekommen.
Etwa die Struktur der beteiligten Tabellen und was du bisher versucht hast. Optimalerweise gibst du gleich noch ein paar Testfälle an... |
AW: ältester Eintrag - Summieren
Evtl. so?
SQL-Code:
Das sollte die Anzahl der Kunden je Jahr liefern, die vorher noch nie bestellt haben. Ich hoffe, ich habe die Aufgabenstellung richtig verstanden.
SELECT
YEAR(X.Datum), COUNT(*) FROM( SELECT Datum, KundenNr FROM Rechnungstabelle R WHERE Datum = ( SELECT MIN(Datum) FROM Rechnungstabelle WHERE KundenNr = R.KundenNr )) X GROUP BY YEAR(X.Datum) ORDER BY YEAR(X.Datum) |
AW: ältester Eintrag - Summieren
Keine Ahnung ob MySQL so was verdaut, bei mir MSSQL funktioniert folgendes
(Aulirema =Rechungen, Akpos = Rechnungspositionen)
Code:
Select g.Kdnr,g.Jahr,SUM(VKEuro) from dbo.Akpos p Join Aulirema r on r.Nummer=p.Nummer Join ( Select Kdnr,Min(Year(Datum)) as Jahr from Aulirema group by Kdnr ) g on g.Kdnr=r.Kdnr and g.Jahr= Year(r.Datum) group by g.Kdnr,g.Jahr order by g.Jahr,g.Kdnr |
AW: ältester Eintrag - Summieren
Ok, ein paar Datenbeispiele:
RechNr KundenNr Datum Betrag 100001 10000 20.01.2000 100.00 100002 10000 01.02.2001 50.00 100003 10001 05.03.2009 10.00 100004 10002 01.01.2000 20.00 100005 10002 10.09.2008 10.00 100006 10003 08.08.2010 15.00 Erbnis soll so aussehen: Jahr Anzahl 2000 2 2009 1 2010 1 Ich hoffe das ist jetzt etwas verständlicher... |
AW: ältester Eintrag - Summieren
Hast Du #3 ausprobiert, das sollte eigentlich genau das liefern (ich hab hier nur gerade kein MySQL verfügbar)?
|
AW: ältester Eintrag - Summieren
Noch kürzer.
Code:
Je Kunde das Jahr der ersten Rechnung und dann über diese Tabelle je JahrDerErstenRechnung die Datensätze zählen.
select JahrDerErstenRechnung, Count (*)
from ( Select Kundennummer, min (Year(Rechnungsdatum)) as JahrDerErstenRechnung from Rechnungstabelle group by Kundennummer ) group by JahrDerErstenRechnung -- <<<<< Das fehlt wohl |
AW: ältester Eintrag - Summieren
Ja, das scheint zu laufen. Allerdings habe ich jetzt das Problem, dass die Abfrage sehr lange läuft. Habe es jetzt nach ein paar Minuten abgebrochen. Die Tabelle hat etwas mehr als eine Million Datensätze...
|
AW: ältester Eintrag - Summieren
Aggregatfunktion ohne Gruppierung? Das geht wohl nur in MySQL.
[edit] @handson: dann setz mal entsprechende Indizes [/edit] |
AW: ältester Eintrag - Summieren
Ja, die Sub-Querys laufen auch über die Indizes, aber bei der PRIMARY geht er nicht über einen Index, wie auch...?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz