![]() |
Datenbank: Firebird • Version: V3.0 • Zugriff über: IBDAC
Firebird V3.0 - Neue Aggregatfunktionen
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.... |
AW: Firebird V3.0 - Neue Aggregatfunktionen
Auf den Join anwenden. Ich bezweifle aber, das das schneller als ein Join auf die Summen wäre.
|
AW: Firebird V3.0 - Neue Aggregatfunktionen
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:
LEFT JOIN vs. INNER JOIN musst du entscheiden, ob ein Kunde ohne Auftrag bzw. Rechnung in der Ergebnismenge auftauchen soll.
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 LG |
AW: Firebird V3.0 - Neue Aggregatfunktionen
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).
|
AW: Firebird V3.0 - Neue Aggregatfunktionen
Was heißt sehr viel je Tabelle und wie lange dauert die Abfrage?
|
AW: Firebird V3.0 - Neue Aggregatfunktionen
Du kannst zuerst Joinen und zusammenfassen (langsam) oder schauen, ob die zuerst zusammenfasst und dann die Daten kombinierst ( im Idealfall schneller)
|
AW: Firebird V3.0 - Neue Aggregatfunktionen
Zitat:
Da die Datenmenge auf jeden Fall durchlaufen werden muss, um die Werte zu ermitteln, komme ich wohl um das Thema OLAP/Aggregatstabellen nicht herum, um auch bei varierenden Fragestellungen eine AdHoc-Abfragen in einer akzeptablen Zeit beantworten zu können. Würde es hier noch andere Lösungswege geben? |
AW: Firebird V3.0 - Neue Aggregatfunktionen
Zitat:
![]() |
AW: Firebird V3.0 - Neue Aggregatfunktionen
Interessanter Artikel :thumb:
|
AW: Firebird V3.0 - Neue Aggregatfunktionen
Zitat:
Korrigiere mich bitte, falls ich auf dem Holzweg bin ...:wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 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