2011-01-25 16 views

risposta

11

GROUP BY SIGN (campo) dovrebbe funzionare.

+0

bello anche quello! +1 – Harish

0

provare qualcosa di simile:

select count(*), IF(foo >= 0, "pos", "neg") as sign from test group by sign; 

dove foo è la colonna con i valori positivi o negativi

EDIT: La soluzione di Stefan è più elegante e meglio se si vuole valori zero trattamento diverso da quello positivo e quelli negativi.

+0

Vorrei andare per '> =' piuttosto che '>' - zero è (IMHO) più naturalmente associato a numeri positivi che negativi. – Alnitak

+0

concordato e risolto. – Thilo

4
SELECT SUM(CASE WHEN SomeColumn < 0 THEN 1 ELSE 0 END) AS negative_values, 
     SUM(CASE WHEN SomeColumn >=0 THEN 1 ELSE 0 END) AS non_negative_values 
    FROM YourTable 
+0

si preferisco questa risposta! +1 – Harish

2

La soluzione di Stefan sembra la migliore risposta finora. Se preferisci che 0 sia raggruppato con numeri positivi, puoi usare

GROUP BY `field` >= 0 
Problemi correlati