2014-09-22 3 views
1

У меня есть таблица и хотелось бы вычислить значения. Мой стол:mysql | Строки строк и строк

Таблица голосов

vote type 
1  1 
-1  1 
1  0 
-1  0 
1  0 
-1  1 
1  0 

Голосов: -1 - вниз; +1 - Вверх;

Я хотел бы получить что-то вроде этого:

Count votes up type 1: 1 
Count votes down type 1: 2 

Votes up type 0: 3 
Votes down type 0: 1 

Sum votes type 1: 1+(-1)+(-1) = -1 
Sum votes type 0: 1+(-1)+1+1 = 2 

Можно ли получить результаты из MySQL с помощью одного запроса? Спасибо!

ответ

2

Я думаю, ваша проблема заключается в том, как отличать вверх и вниз голоса здесь.

Вы хотите группировать по типу (который звучит как идентификатор голосования/опроса), а затем просто выбирайте вверх и вниз голоса. Это можно сделать, используя CASE или IF в сочетании с COUNT или SUM.

COUNT не учитывает NULL значения, так что я предлагаю, чтобы обернуть два COUNT с в IF с.

SELECT 
type, 
COUNT(IF(vote = -1, TRUE, NULL)) AS down, 
COUNT(IF(vote = 1, TRUE, NULL)) AS up 
FROM votes 
GROUP BY type 

SQL Скрипки: http://sqlfiddle.com/#!2/36008/1/0

0

вы можете написать

select count(*) from table where type = 1 and vote = -1 


select count(*) from table where type = 1 and vote = 1 

выше даст вам количество результатов, которые вы хотите.

0

Это будет работать

select sum(vote),type from table group by type; 
Смежные вопросы