Nur unterschiedliche Werte zählen...

Hallo, brauche nochmal eure Hilfe!

Hab eine Tabelle (tblA) gegeben:

 uid | number
-----+------
   1 | 5
   1 | 5
   1 | 4
   2 | 2
   2 | 1
   2 | 3
   3 | 1

Ein View soll nun So viele Zeilen anlegen, wie es unterschiedliche uids in der Tabelle gibt (hier 3). Als zweite Spalte im View soll die Anzahl der unterschiedlichen Werte (Numbers) stehen.
Also in dem Bsp hier:

 uid | count
-----+------
   1 | 2
   2 | 3
   3 | 1

uid 1 hat 2 unterschiedliche Werte (5, 4); uid 2 hat 3 unterschiedliche Werte (2, 1, 3) usw.

Leider bekomm ich das nicht hin.
So funktionierts leider nicht:

SELECT tblA.uid AS uid, 
       count(tblA.number) AS count
   FROM tblA
  GROUP BY tblA.uid;

So zählt er jeden Wert zur uid und nicht die Anzahl der unterschiedlichen Werte.
Wäre toll wenn mir da jemand helfen könnte!

MfG Emanuel

SELECT [color=red]DISTINCT[/color] tblA.uid AS uid, 
       count(tblA.number) AS count
   FROM tblA
  GROUP BY tblA.uid;

Damit sollte es gehen.

cu tb.

Das hab ich schon probiert, funktioniert leider auch nicht - er zählt immer alle ‘number’ einträge pro uid und nicht NUR die unterschiedlichen…



test=*# select * from foo;
 uid | number
-----+--------
   1 |      5
   1 |      5
   1 |      4
   2 |      2
   2 |      1
   2 |      3
   3 |      1
(7 rows)

test=*# select uid, count(distinct number) from foo group by 1 order by 1;
 uid | count
-----+-------
   1 |     2
   2 |     3
   3 |     1
(3 rows)

Andreas

Ach du willst die Eindeutigen. Sry darauf hab ich jetzt nicht geachtet :wink:

Was spricht dagegen, mit DISTINCT zu spielen und auch die Nummer zu DISTINCTen? Ist jetzt zwar nicht geprüft aber ich erinnere mich das Oracle das damals konnte duck :wink:

cu tb.

nachtrag: akretschmar hat das gemacht was ich gemeint hab - er war nur schneller wie ich :wink:

Ah perfekt, danke!

Hatte ich zwar auch probiert, hab aber das DISTINCT vor dem count(…) geschrieben -> error :rolleyes:

Danke Leute!