Problem mit Query

Hi ich habe folgende query

SELECT userid,
        sum(CASE WHEN col >= 75 AND col < 85 THEN 1 ELSE 0 END) as "50% to 70%",
        sum(CASE WHEN col >= 85 AND col < 95 THEN 1 ELSE 0 END) as "70% to 90%",
        sum(CASE WHEN col >= 95 AND col < 99 THEN 1 ELSE 0 END) as "90% to 95%",
        sum(CASE WHEN col >= 99 AND col <= 100 THEN 1 ELSE 0 END) as "95% to 90%",
        COUNT(*) as count FROM table
        GROUP BY userid'

Ich will die Prozentspannen zählen, und zwar pro Benutzer.
Mein Problem ist, dass er nicht hochzählt, wenn bestimmte Bereiche öfter vorkommen, sondern immer nur auf 1 setzt oder nicht.
Das wollte ich mit sum ändern

Jayni

works for mee:

test=*# select * from foo;
 userid | col
--------+-----
      1 |  10
      2 |  20
      3 |  30
      4 |  40
      5 |  50
      6 |  60
      7 |  70
      8 |  80
      9 |  90
      1 |  15
(10 rows)

Time: 0,177 ms
test=*# select userid, sum(case when col < 50 then 1 else 0 end) as _50, sum(case when col between 50 and 70 then 1 else 0 end) as _50_70 from foo group by userid;
 userid | _50 | _50_70
--------+-----+--------
      8 |   0 |      0
      4 |   1 |      0
      1 |   2 |      0
      5 |   0 |      1
      3 |   1 |      0
      9 |   0 |      0
      6 |   0 |      1
      2 |   1 |      0
      7 |   0 |      1
(9 rows)

Sowas, jetzt funktionierts bei mir auch.
Wenn ich das ausgebe wie kann ich den bei der Spaltendefinition Name wie “50%-70%” angeben?
Jayni



test=# select '50%-70%' as "50%-70%";
 50%-70%
---------
 50%-70%
(1 row)

Das Problem ist ich führ das in der form mit PHP aus:

$a = pg_query("SELECT * FROM function('string') AS (user text, 50%-75% bigint)");

Da kann ich dann nur einfache Anführungzeichen verwenden.
Jayni