Найти сумму двух верхних столбцов и сколько очков у них? - PullRequest
0 голосов
/ 28 мая 2019

Попытка найти 2 верхних столбца с функцией суммы.

Столбцы могут иметь либо 0 , либо 1 целочисленное значение.

Таблица может отображаться как:

ID  C_ONE C_TWO C_THREE
1     1     1     0
2     0     1     1
3     1     1     0
4     0     0     0
5     1     1     0

*Столбец 1012 * C_TWO имеет 4 точек и C_ONE столбец имеет 3 точек, которые являются верхними2 столбца и их значения соответственно.

Я застрял с этими кодами.

SELECT COUNT(ID)
FROM MY_TABLE
ORDER BY SUM(C_ONE), SUM(C_TWO), SUM(C_THREE)
LIMIT 2

1 Ответ

1 голос
/ 28 мая 2019

Ну, вы можете разворачивать и агрегировать:

select c.col,
       (case when c.col = 'col1' then t.col1
             when c.col = 'col2' then t.col2
             when c.col = 'col3' then t.col3
        end) as cnt
from (select sum(col1) as col1, sum(col2) as col2, sum(col3) as col3
      from t
     ) t cross join
     (select 'col1' as col union all
      select 'col2' as col union all
      select 'col3' as col
     ) c
order by cnt desc
limit 2;
...