MySQL сумма крошечных - PullRequest
       40

MySQL сумма крошечных

0 голосов
/ 06 июля 2018

У меня есть таблица с пятью столбцами tinyint.

Если я сделаю запрос, ища строку, я получу такой результат:

select flag1, flag2, flag3, flag4, flag5 from mytable where whatever;

Результирующий набор (изображение)

Мне нужно получить сумму, как если бы они были целыми числами. В этом примере выходные данные равны четырем и одному нулю, поэтому я хотел бы получить 4.

Этот запрос не работает:

select sum(flag1, flag2, flag3, flag4, flag5) from mytable where whatever;

Это не так:

select sum(flag1, flag2, flag3, flag4, flag5) from mytable where whatever;

Ответы [ 4 ]

0 голосов
/ 06 июля 2018

выберите сумму (flag1 + flag2 + flag3 + flag4 + flag5) как общее значение, id из mytable группы по id

0 голосов
/ 06 июля 2018

Вы должны разыграть tinyint s в int s, чтобы использовать SUM(). Попробуйте это:

select sum(cast (flag1 as int),cast (flag2 as int) ...
0 голосов
/ 06 июля 2018
select sum(flag1 + flag2+ flag3+ flag4+ flag5) sumflag  from mytable 

Результат:

| sumflag |
|---------|
|       4 |

Тестовая демонстрация


DDL:

CREATE TABLE mytable
    (`flag1` tinyint, `flag2` tinyint, `flag3` tinyint, `flag4` tinyint, `flag5` tinyint)
;

INSERT INTO mytable
    (`flag1`, `flag2`, `flag3`, `flag4`, `flag5`)
VALUES
    (1, 1, 1, 0, 1)
;
0 голосов
/ 06 июля 2018

Вы можете использовать оператор + для суммирования значений строки.

SELECT flag1 + flag2 + flag3 + flag4 + flag5
       FROM mytable;
...