SQL добавляет два столбца и группирует по количеству

Я хочу добавить два столбца и сгруппировать по количеству. Например, скажем, у меня есть следующая таблица:

ID -------- value1 ---------- value2    
A ------------ 2 -----------------3    
B ------------ 1 -----------------4    
c ------------ 2 -----------------2   
D ------------ 3 -----------------3   
E ------------ 2 -----------------1
F ------------ 1 -----------------3

Если вы подсчитаете сумму (select value1 + value 2) в каждой строке, вы получите 5,5,4,6,3,4.

Я хотел бы получить следующий результат.

5 ------ 2    
4 ------ 2   
3 ------ 1   
6 ------ 1

person Joshua Spens    schedule 02.11.2017    source источник


Ответы (2)


Вы можете просто сделать:

select (val1 + val2), count(*)
from t
group by (val1 + val2)
order by count(*) desc;
person Gordon Linoff    schedule 02.11.2017

Это одно из решений: сделать SUM из двух столбцов в CTE, а затем просто COUNT идентификатор сгруппировать по сумме:

declare @tbl as table (
    id varchar(1)
    ,val1 int
    ,val2 int
)

insert into @tbl values ('A',2,3)
insert into @tbl values ('B',1,4)
insert into @tbl values ('C',2,2)
insert into @tbl values ('D',3,3)
insert into @tbl values ('E',2,1)
insert into @tbl values ('F',1,3)

;WITH CTE AS (
    SELECT
        id
        ,val1+val2 as [sum]
    FROM @tbl
)
SELECT
    [sum]
    ,count(id) as [count]
FROM CTE
GROUP BY sum
person Valerica    schedule 02.11.2017