2015-05-03 17 views
5

Trong cơ sở dữ liệu mysql Tôi có một bảng như thế này:Đối với truy vấn SQL, đếm với nơi lỗi khoản

create table review(
reviewId varchar(12) primary key, 
helpfulness double, 
reviewRating integer) 

tôi cố gắng để đếm hữu ích và vô ích group byreviewRatinghelpfulnesswhere> = 0,75 như unhelpfulness hoặc nơi < 0,75 như sự hữu ích. Làm thế nào tôi có thể nhận được kết quả như thế này?

unhelpfulness helpfulness reviewRating 
5    2   1 
4    2   2 
3    4   3 

tôi cố gắng để làm như thế này, nhưng nó có vẻ như số lượng đã không làm việc và tham gia không hợp lệ tại vị trí đó.

SELECT a.count AS HELPFUL, b.count AS UNHELPFUL 
FROM review a where helpfulness>=0.75 group by a.reviewRating 
OUTER JOIN review b where helpfulness<0.75 group by b.reviewRating 
on a.reviewRating = b.reviewRating 
+0

Câu hỏi: sẽ không tính giá trị hữu ích nào lớn hơn 0,75? Nói cách khác, bất kỳ số nguyên nào từ 1 đến 5? – grill

Trả lời

3

Trong Mysql bạn có thể làm như vậy bằng cách sử dụng sum với một số điều kiện hay biểu hiện nó sẽ cho kết quả như một boolean (0/1) và bằng cách này bạn có thể nhận được đếm có điều kiện

SELECT a.reviewRating, 
SUM(helpfulness>=0.75) AS HELPFUL, 
SUM(helpfulness < 0.75)AS UNHELPFUL 
FROM review a 
GROUP BY a.reviewRating 
0

Bạn có thể triển khai tập hợp có điều kiện với case biểu thức:

select a.reviewRating 
    , count(case when helpfulness >= 0.75 then helpfulness end) as helpful 
    , count(case when helpfulness < 0.75 then helpfulness end) as unhelpful 
from review a 
group by a.reviewRating 
Các vấn đề liên quan