SQL использует больше двух столбцов с регистром - PullRequest
0 голосов
/ 11 марта 2019

Я не могу найти хорошее объяснение своей проблемы.

У меня есть таблица:

user   | 70Y   | hospital
-------+-------+----------
1      | 18    | 1   
2      | 70    | 1 
3      | 90    | 0

Мне нужно узнать, сколько людей имеют более 70Y, иесли он имеет, сколько из этих людей находится в больнице.

Я использую это, чтобы выяснить, является ли его возраст более 70:

SUM(CASE WHEN 70y > 70 THEN 1 ELSE 0 END) AS 'old_person'

но как я узнаю, что онв больнице?

Что я ожидаю от таблицы:

 | old_person | old_person_in_hospital| 
 +------------+-----------------------+
 | 18         |              1        | 

А если я захочу и еще столбцов, скажем, проверить на 40Y, какой самый простой способ сделать это?

Что я ожидаю от таблицы:

             | old_person  |  40y_person         | 
             +-------------+---------------------+
             | 18          |            16       | 
in hospital  | 1           |             2       | 

Ответы [ 3 ]

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

Вам нужен регистр для каждого столбца:

select 
  SUM(Case when [70y] > 70 then 1 else 0 end) old_person,
  SUM(Case when [70y] > 70 and hospital = 1 then 1 else 0 end) old_person_in_hospital
from tablename
0 голосов
/ 11 марта 2019

Как насчет перемещения условия в предложение where?

select count(*) as old_person,
       sum(hospital) as old_person_in_hospital
from tablename
where [70y] > 70;

Если вы хотите добавить больше возрастных групп, то вы могли бы использовать условное агрегирование.Однако я мог бы предложить вам использовать агрегацию вместо этого и поместить результаты в разные строки.Например:

select (age / 10) as decade,
       count(*) as num_people,
       sum(hospital) as num_in_hospital
from tablename
group by (age / 10);
0 голосов
/ 11 марта 2019

используйте другой случай для числа в больничном счете

select SUM(Case when 70y > 70 then 1 else 0 end) as old_person,
  sum (Case when 70y > 70 and hospital=1 then 1 else 0 end ) hospital
from tbale
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...