Agregatfunktion Problem

Hi,

Das ist meine abfrage

SELECT v_rec1.user,
       sum(CASE WHEN v_rec_fts.lev BETWEEN 0 AND 25 THEN 1 ELSE 0 END) as "0 to 25",
       sum(CASE WHEN v_rec_fts.lev BETWEEN 25 AND 50 THEN 1 ELSE 0 END) as "25 to 50",
       sum(CASE WHEN v_rec_fts.lev BETWEEN 50 AND 100 THEN 1 ELSE 0 END) as "50 to 100"
       INTO v_rec2
       GROUP BY user;

Das Problem das ich habe ist dass ich die Spannen von jedem benutzer einzelnd zaehlen moechte und nicht von allen Benutzen zusammen.

Jayni

Erst einmal hast Du das Problem, daß FROM fehlt.

Du zählst die Spannen doch je user? Willst Du je User andere Grenzen definieren? Das könnte so gehen:

test=*# select * from foo;
 id | val
----+-----
  1 |  10
  1 |  20
  2 | 100
  2 | 200
(4 rows)

test=*# select * from foo_user;
 i | range1  |  range2
---+---------+-----------
 1 | [1,10)  | [10,100)
 2 | [1,100) | [100,300)
(2 rows)

test=*# select id, sum((select count(*) from foo_user where id=foo.id and range1 @> foo.val)), sum((select count(*) from foo_user where id=foo.id and range2 @> foo.val)) from foo group by id;
 id | sum | sum
----+-----+-----
  1 |   2 |   2
  2 |   0 |   2
(2 rows)

Und nun: Kaffee …

Ich dachte ich zaele alle zeilen in der Spalte lev die die spanne haben.
Ich hab die FROM klausel weggelassen, da das nicht funktioniert:

SELECT v_rec1.user FROM v_rec1

Ich hab zurzeit leider nicht die moeglichkeit das zu testen, aber in 2 tagen

Jayni