#mysql #sql #group-by #sum
#mysql #sql #группировать по #сумма
Вопрос:
Я хочу объединить значение в одной таблице
select sum(if(dep_id=2,point,0)) as totalpoint,
sum(if(dep_id=3,point,0)) as totalpoint
from user_info
Это моя таблица:
Я хочу получить такой результат:
Я не знаю, как это исправить. Пожалуйста, помогите мне
Комментарии:
1. У вас должны быть разные псевдонимы столбцов.
2. Поместите свой код в свой вопрос, а не изображения. Приветствия
Ответ №1:
Вы, кажется, хотите агрегации:
select dep_id, sum(point) totalpoints
from user_info
where dep_id in (2, 3)
group by dep_id
Если в таблице отсутствуют dep_id
значения, и вы все еще хотите, чтобы они были в результирующем наборе со 0
значением, тогда это немного отличается. Можно перечислить значения в производной таблице, а затем привести исходную таблицу с объединением:
select d.dep_id, coalesce(sum(ui.point), 0) totalpoints
from (select 2 dep_id union all select 3) d
left join user_info ui on ui.dep_id = d.dep_id
group by d.dep_id
Ответ №2:
Вы также можете использовать ОБЪЕДИНЕНИЕ :
select dep_id, sum(point) as totalpoint
from user_info
where dept_id = 2
union
select dep_id, sum(point) as totalpoint
from user_info
where dept_id = 3