2011-01-25 18 views

Trả lời

11

GROUP BY SIGN (field) sẽ hoạt động.

+0

cũng tốt nhất! +1 – Harish

0

Hãy thử một cái gì đó như thế này:

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

nơi foo là cột với các giá trị tích cực hay tiêu cực

EDIT: giải pháp Stefan là thanh lịch hơn và tốt hơn nếu bạn muốn không giá trị đối xử khác biệt từ tích cực và tiêu cực.

+0

Tôi muốn tìm '> =' chứ không phải '>' - số không là (IMHO) tự nhiên được kết hợp với số dương hơn số âm. – Alnitak

+0

Đồng ý và cố định. – 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

vâng tôi sẽ thích câu trả lời này! +1 – Harish

2

Giải pháp của Stefan trông giống như câu trả lời hay nhất hiện nay. Nếu bạn muốn 0 được nhóm với số dương, bạn có thể sử dụng

GROUP BY `field` >= 0 
Các vấn đề liên quan