SQL: Aggregats- und Gruppierungsfunktion

Hallo ihr,
ich brauche Hilfe bei einer Postgre SQL aufgabe für meinen Informatikkurs
Gegeben sei die folgende Tabelle Tab3:

A B
1 2
9 6
3 3
9 2
2 7
7 4
9 4
3 7

Geben Sie die Ergebnistabellen der folgenden Anfragen an:

  1. select count(distinct A) from Tab3 where B >= 3;

  2. select A, count(*), sum(B), max(A), avg(B) from Tab3 group by A;

Ich verstehe nicht, wie man vorgehen muss um die Ergebnistabelle zu ermitteln. wir sollen das im Kopf machen.
Bei der 1. Aufgabe geht es wohl so dass man ja schaun muss, wie oft ein eintrag in Spalte A vorkommt, aber nur da wo B>=3; dann würde ich
A
2
2
1
1
erhalten, aber das ist nicht richtig.
Wäre super, wenn mir jemand erklären könnte, wie man die Funktionen genau liest.
viele Grüße und vielen Dank,
Lyra

Hallo,
ich habe neben meinem Wissensgebiet österreichische Bildhauer auch Datenbankkentnisse angegeben. Leider ist mein Datenbankwissen nur allgemeiner Natur in Access. Ihre Anfrage kann ich nicht beantworten.

Mit freundlichen Grüßen, Karl Novak

Hallo,

Guten Tag,

Hallo ihr,
ich brauche Hilfe bei einer Postgre SQL aufgabe für meinen
Informatikkurs
Gegeben sei die folgende Tabelle Tab3:

A B
1 2
9 6
3 3
9 2
2 7
7 4
9 4
3 7

Geben Sie die Ergebnistabellen der folgenden Anfragen an:

  1. select count(distinct A) from Tab3 where B >= 3;

Das liefert als Ergebnis genau einen Wert, nämlich die Anzahl der verschiedenen Einträge, bei denen B>=3 ist.
B>=3:

A B
9 6
3 3
2 7
7 4
9 4

Verschiedene Werte in A:

A B
9 6
3 3
2 7
7 4

Anzahl: 4

  1. select A, count(*), sum(B), max(A), avg(B) from Tab3 group
    by A;

Es wird nach A gruppiert, d.h. für gleiche Werte von A wird das jeweils zusammengefaast und berechnet:
Erstmal sortiert:

A B
1 2
2 7
3 3
3 7
7 4
9 2
9 6
9 4

Jetzt die Zeilen mit gleichem A zusammenfassen:

A sum(B), max(A), avg(B)
1 2 1 2 (aus einer Zeile)
2 7 2 7 (aus einer Zeile)
3 10 3 5 ((aus 2 Zeilen)
7 4 7 7 (aus einer Zeile)
9 12 9 4 (aus 3 Zeilen)

max(a) und a sind immer gleich, da nach A gruppiert wird, sum(b) und avg(b) wird für jede Gruppe mit gleichem A getrennt berechnet.

Alex