2011-01-25 9 views

答えて

11

GROUP BY SIGN(フィールド)が機能するはずです。このような

+0

でもいいですね。 +1 – Harish

0

てみてください何か:

fooが正または負の値を持つ列である
select count(*), IF(foo >= 0, "pos", "neg") as sign from test group by sign; 

EDIT:あなたはポジティブとは異なる扱いゼロ値をしたい場合はステファンのソリューションは、よりエレガントで優れていると否定的なもの。

+0

私は '>'ではなく '>'に行くでしょう - ゼロは負の数よりも自然に関連した(IMHO)です。 – Alnitak

+0

合意し、修正しました。 – 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

はい私はこの答えを好むでしょう! +1 – Harish

2

これまでのところ、ステファンの解決策は最良の答えのようです。 0を正の数値でグループ化することをお望みなら、

GROUP BY `field` >= 0 
関連する問題