Werte addieren, mit komplizierten Bedingungen

Hier kommen Posts zu anderen Datenbanken als PostgreSQL rein.
castorp
Erfahrener Benutzer
Beiträge: 1033
Registriert: Sa 27. Jun 2009, 22:24

Beitrag von castorp » Mo 27. Feb 2012, 14:38

ads hat geschrieben:Ihr vergesst, dass der Code dann auf Oracle laufen muss ;-)

Mein Beispiel läuft auf Oracle
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

paludi06
Neuer Benutzer
Beiträge: 5
Registriert: Mo 27. Feb 2012, 08:30

Beitrag von paludi06 » Di 28. Feb 2012, 14:32

castorp hat geschrieben:"partition by" ist im Endeffekt ein group by nur "on the fly" - man muss dabei nicht das gesamte Resultat gruppieren.

Durch das order by case ... end wird innerhalb der Gruppe der Wert für HV an die erste Stelle sortiert, first_value() liefert einfach den ersten Wert der Gruppe zurück. Lass mal nur das "innere" Select alleine laufen dann siehst Du was passiert.

Ein gutes Tutorial bzgl. Windowing functions (so heissen die) kannst Du im PostgreSQL Handbuch finden: PostgreSQL: Documentation: Manuals: Window Functions

Oracle nennt das "Analytic Functions". Der entsprechende Abschnit im Handbuch ist hier: Analytic Functions
bzw. eine etwas längere Einführung ist hier: SQL for Analysis and Reporting

Ja. Das ist ein Alias für die "derived table" (sub-select). Unter Oracle nicht zwingend notwendig, ist aber guter Stil.



Vielen Dank für die Erläuterungen, hat mir wirklich sehr geholfen.

Falls ich mal wieder ein Problem hab, weiß ich wohin ich mich wenden kann ;)

Antworten