AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ältester Eintrag - Summieren
Thema durchsuchen
Ansicht
Themen-Optionen

ältester Eintrag - Summieren

Ein Thema von handson · begonnen am 23. Feb 2012 · letzter Beitrag vom 24. Feb 2012
Antwort Antwort
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#1

AW: ältester Eintrag - Summieren

  Alt 23. Feb 2012, 11:33
Noch kürzer.
Code:
select JahrDerErstenRechnung, Count (*)
  from (
   Select Kundennummer, min (Year(Rechnungsdatum)) as JahrDerErstenRechnung
     from Rechnungstabelle
     group by Kundennummer
   )
group by JahrDerErstenRechnung -- <<<<< Das fehlt wohl
Je Kunde das Jahr der ersten Rechnung und dann über diese Tabelle je JahrDerErstenRechnung die Datensätze zählen.

Geändert von Iwo Asnet (23. Feb 2012 um 13:47 Uhr) Grund: Fehlendes Group By eingefügt...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.655 Beiträge
 
Delphi 12 Athens
 
#2

AW: ältester Eintrag - Summieren

  Alt 23. Feb 2012, 11:35
Aggregatfunktion ohne Gruppierung? Das geht wohl nur in MySQL.

[edit] @handson: dann setz mal entsprechende Indizes [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
handson

Registriert seit: 18. Jan 2007
Ort: Delmenhorst
113 Beiträge
 
Delphi 2007 Professional
 
#3

AW: ältester Eintrag - Summieren

  Alt 23. Feb 2012, 11:46
Ja, die Sub-Querys laufen auch über die Indizes, aber bei der PRIMARY geht er nicht über einen Index, wie auch...?
Stephan Faust
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: ältester Eintrag - Summieren

  Alt 23. Feb 2012, 13:02
Ich bin kein mySQL Spezi, aber vielleicht hilft es dem Optimizer, doch etwas genauer vorzugehen.
Du könntest das "fehlende" Group by ergänzen.
Was sagt denn der Ausführungsplan? Deine "Primary" Aussage habe ich vlt. nicht verstanden. Du meinst die äußere Abfrage?
Wieviel Sätze würde das innere Select allein ergeben? Oder der Rechnungsschnitt pro Kunde?

(Vielleicht solltest Du auch überhaupt dieses Verhalten abschalten, das das fehlende Group ermöglicht, aber das bedarf natürlich intensiver Tests )
Gruß, Jo
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#5

AW: ältester Eintrag - Summieren

  Alt 23. Feb 2012, 13:48
Habe mal eben das fehlende "Group by" in der Query eingefügt.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: ältester Eintrag - Summieren

  Alt 23. Feb 2012, 18:18
Hat deine Kundentabelle kein Datumsfeld in dem der Zeitpunkt der Anlage vermerkt ist?
Dann bräuchte man nur eine Abfrage über die Kundentabelle machen und könnte die Rechnungen unberücksichtigt lassen.
Es könnte zwar Kunden geben, die bestellen und dann stornieren aber
für die Frage "wie viele Neukunden pro Jahr" wäre das aber ausreichend genau.
Andreas
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: ältester Eintrag - Summieren

  Alt 23. Feb 2012, 19:04
Die Abfrage funktioniert ja. Außerdem können Zeitpunkt der Anlage und der ersten Rechnungsstellung leicht um ein paar Wochen differieren. Die gewünschte Abfrage dürfte außerdem nur wenige Sekunden dauern, wenn's kein 486er ist.
Gruß, Jo
  Mit Zitat antworten Zitat
handson

Registriert seit: 18. Jan 2007
Ort: Delmenhorst
113 Beiträge
 
Delphi 2007 Professional
 
#8

AW: ältester Eintrag - Summieren

  Alt 24. Feb 2012, 08:56
Moin!

Mit der PRIMARY Query meine ich die Haupt-Query, die die Sub-Querys in der FROM-Anweisung beinhalten.

@DaddyH: Deine Anweisung hat funktioniert, allerdings hat die Abfrage bei 1 Millionen Datensätzen ca. 2-3 min. gedauert.

@Iwo: Bei dir hat es auch geklappt, allerdings brauchte diese Abfrage nur wenige Sekunden. Das liegt wohl an der Subquery. Es ist nämlich eine weniger als bei DaddyH.

Vielen Dank an alle für die schnelle und kompetente Hilfe!

Gruß,
Stephan
Stephan Faust
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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 by Thomas Breitkreuz