SQL: Как получить другое значение из одного столбца / типа? - PullRequest
1 голос
/ 16 марта 2019

Я пытаюсь сложить общее число из таблицы name ниже:

id  type  num
2   0     90
24  1     38
2   1     878
9   0     8763
9   2     76
9   1     374

В столбце type есть три типа, я хотел бы найти все идентификаторыкоторые их type = 0 и 1.например, в таблице id = 2 и id = 9 имеют type = 0 и type = 1.Так что соберу эти данные и сложу их вместе, как показано ниже:

       type: num
id 2 - 0:90
       1:878

id 9 - 0:8763
       1: 374

sum = 90 + 878 + 8764 + 374 = 10,106

Я сделал запрос следующим образом:

SELECT SUM(num) FROM  table WHERE type = 0 AND type = 1;

но там нечего показать.Это работает, если я изменяю запрос на type = 0 OR type = 1, но я не считаю его правильным.Как суммировать num, где type = 0 и type = 1?

Я очень смущен, я не уверен, что я объясню четко, если вы можете оказать некоторую помощь, это будет очень признательно.

Ответы [ 3 ]

1 голос
/ 16 марта 2019

С помощью этого запроса:

  select id from tablename
  where type in (0, 1)
  group by id
  having min(type) = 0 and max(type) = 1

вы получите все идентификаторы, которые имеют оба типа 0 и 1.Таким образом, вы присоединяете его к таблице, чтобы получить желаемую сумму:

select sum(t.num) total 
from tablename t inner join (
  select id from tablename
  where type in (0, 1)
  group by id
  having min(type) = 0 and max(type) = 1
) g on g.id = t.id
where t.type in (0, 1)

См. демо Или без объединения:

select sum(t.num) total from (
  select id, sum(num) num from tablename
  where type in (0, 1)
  group by id
  having min(type) = 0 and max(type) = 1
) t

См. Демоверсию

1 голос
/ 16 марта 2019

Это должно сработать:

select
  sum(a.num + b.num)
from (
  select id, num from table where type = 0
) a
join (
  select id, num from table where type = 1
) b on a.id = b.id
0 голосов
/ 16 марта 2019

Если я хорошо понимаю вопрос, ответ довольно прост:

SELECT SUM(num)
FROM name
WHERE type = 0 OR type = 1

Вы хотите суммировать все num значения из строк, где type = 0 или type = 1.Это именно то, что выражает вышеуказанный запрос SQL .К чему ты на самом деле пришел.

Это то, что тебе нужно @lily?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...