У меня есть таблица remarks
с колоннами id, story_id, like
как может быть +1
, -1
Я хочу, чтобы мой select
запроса возвращать следующие столбцы story_id, total, n_like, n_dislike
где total = n_like + n_dislike
без вложенных запросов.выбрать результирующий набор строк для преобразования столбцов
Я сейчас делаю group by
на like
и select
ING like as like_t, count(like) as total
, который дает мне выход, как
-- like_t --+ --- total --
-1 | 2
1 | 6
и возвращает две строки в наборе результатов. Но то, что я хочу, чтобы получить строку, в которой 1
n_like is 6
и n_dislike является 2
и total
является 8
Да, настоящее имя столбца не похоже, но проблема в том, что эти '+ 1',' -1' не являются целыми числами, они являются некоторыми типами enum. поэтому 'abs' и сумма не будет работать. только 'count' will.so just (CASE WHEN" like "> 0 THEN count (" like ") ELSE 0 END) AS n_like работает. Спасибо –
Лучше использовать 'CASE WHEN" like "> 0 THEN 1 ELSE 0 END' для поля n_like. Кроме того, может быть, лучше сделать значения числовыми? – vyegorov
Если '+ 1' и' -1' - единственные возможности, я должен назначить для него целый набор чисел? Запрос дает две строки для '+ like', где' n_like = n' и 'n_dislike = 0' и еще одна строка для' dislikes' где 'n_like = 0' и' n_dislike = n', но я хочу ее в одном row –