-
Ja, da ist mir noch eine einfachere Lösung tatsächlich eingefallen:
Code:
select * from (
Select F1, f2, Count(*) Count0,
from x
Group By F1, F2;
)
cross join lateral (
select count(*) Count1
from x
)
Der innere Select liefert die Anzahl je Gruppe
A, B, 10
A, C, 14
Der Cross join liefert die Zahl 24 und wird mit jeder Zahl verknüpft, also als Ergebnis
A, B, 10, 24
A, C, 14, 24
Der Join Lateral ist, vor allem in seiner Performance, nicht zu verachten.
Denn dieser bearbeitet den SQL so, dass keine langwierige Optimierung wie bei normelen Joins nötig ist.
Über die Where-Klausel werden die Daten ausschließlich auf die aktuelle Zeile eingeschränkt.
Beispiel:
Code:
select * from (
select f1, f2 -- Liefert nur die Gruppen
from x
group by f1, f2
) a
cross join lateral (
select count(*) Count0 -- Zählt die Ergebnisse der Gruppen f1,f2
from x
where a.f1 = x.f1
and a.f2 = x.f2
)
cross join lateral (
select count(*) Count1 -- Zählt die Ergebnisse der Gruppen f1
from x
where a.f1 = x.f1
)
cross join lateral (
select count(*) Count2 -- Zählt das Gesamtergebnis
from x
)
Ich sagte ja schon mal:
Der Join lateral wirkt wie ein scalarer subselect, der allerdings mehr als 1 Spaltenergebnis liefern kann.
In der Kombination mit Values(....) kann man bereits Teilergebnisse berechnen, auf die in folgenden join lateral wieder Bezug genommen werden kann.
Dies vereinfacht z.T. erheblich die SQL's, da sich wiederholende Berechnungen nicht benötigt werden.
Man kann mit dem Ergebnis des lateral wieder einen weiteren Join, eine Where-Klausel oder einen Order by verwenden.
Similar Threads
-
By Starocotes in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 26-08-20, 15:46
-
By Robi in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 06-04-16, 16:04
-
By DEVJO in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 01-02-14, 15:22
-
By Bitverdreher in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 05-11-13, 08:39
-
By falke34 in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 17-02-09, 07:07
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks