AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird V3.0 - Neue Aggregatfunktionen
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird V3.0 - Neue Aggregatfunktionen

Ein Thema von lowmax_5 · begonnen am 15. Jan 2015 · letzter Beitrag vom 16. Jan 2015
Antwort Antwort
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
258 Beiträge
 
Delphi 11 Alexandria
 
#1

Firebird V3.0 - Neue Aggregatfunktionen

  Alt 15. Jan 2015, 14:22
Datenbank: Firebird • Version: V3.0 • Zugriff über: IBDAC
Hallo,

ich möchte gerne die neuen FB-Funktionen nutzen OVER/PARTITION nutzen, um Aggregatabrufe zu beschleunigen.
Die Daten befinden sich nun aber in mehreren Tabellen:

Kunden(KNr,Name)
Rechnungen (RNr,Datum, Betrag,KNr)
Auftrag (ANr,Datum,Betrag,KNr)

Als Ergebnis soll folgendes herauskommen:
KNr,Name, SumAuftragbetrag,SumRechnungBetrag,AvgRechnungBetr ag

Der Weg über 'Group by' oder dem bekannten 'inline select' ist mir klar. Nur wie lässt sich dieses mit OVER/PARTITION realisieren? Stehe gerade auf dem Schlauch....
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 15. Jan 2015, 16:10
Auf den Join anwenden. Ich bezweifle aber, das das schneller als ein Join auf die Summen wäre.
Markus Kinzler
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#3

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 16. Jan 2015, 07:32
Ich bezweifle, dass dir hier die neuen Aggregatsfunktionen einen Mehrwert bringen. Die Idee von diesen neuen Window Functions ist einfach gesagt die Entkopplung der GROUP BY Klausel (was eine Filterung der Datenmenge als Folge hat) von der Aggregatsbildung. In deinem Fall willst ja dann einfach eine Zeile je Kunde mit den Summen haben, oder? Hier tuts ein einfaches:

Code:
select
  k.knr
  , k.name
  , sum(a.betrag) as sum_auftragbetrag
  , sum(r.betrag) as sum_rechungbetrag
from
  kunden k
  left join AUFTRAG a on (a.KNR = k.KNR)
  left join RECHNUNGEN r on (r.KNR = k.KNR)
group by
  k.KNR
  , k.NAME
LEFT JOIN vs. INNER JOIN musst du entscheiden, ob ein Kunde ohne Auftrag bzw. Rechnung in der Ergebnismenge auftauchen soll.

LG
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
258 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 16. Jan 2015, 09:44
Vielen Dank für die Antworten. Da hatte ich mir doch wohl ein wenig zu viel Hoffnungen in die neuen Aggregatsfunktionen gesteckt... Da sehr viele Datensätze durchgegangen werden müssen und die Performance nicht entsprechend gut ist, muss ich dann wohl konzeptionell anders vorgehen (==>OLAP).
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#5

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 16. Jan 2015, 09:50
Was heißt sehr viel je Tabelle und wie lange dauert die Abfrage?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 16. Jan 2015, 10:07
Du kannst zuerst Joinen und zusammenfassen (langsam) oder schauen, ob die zuerst zusammenfasst und dann die Daten kombinierst ( im Idealfall schneller)
Markus Kinzler
  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 00:23 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