Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как вывести количество имеющихся людей в базе данных по возрасту ?  [new]
Krapachino
Member

Откуда:
Сообщений: 1
Есть две таблицы : db_person со столбцами id, stat
db_person_fio cо столбцами id_person, dr(дата рождения), w(1- мужчина, 2 - женщина)
Нужно составить запрос который будет показывать сколько есть в базе человек для каждого w (мужчина , женщина) с интервалом в 10 лет, и stat > 0 .Например :
............Мужчин Женщин
10 лет...1000.....548
20 лет...4564.....8944
и так далее

Есть похожий на правду запрос, только он не работает
SELECT T.YEAR,
SUM(CASE WHEN T.W = 1 THEN 1 ELSE 0 END) AS MEN,
SUM(CASE WHEN T.W = 2 THEN 1 ELSE 0 END) AS WOMEN
FROM (SELECT (YEAR(CURRENT_DATE) - YEAR(F.DR)) DIV 10 AS YEAR, F.W
FROM DB_PERSON AS P LEFT JOIN DB_PERSON_FIO AS F ON P.ID = F.ID_PERSON
WHERE P.STAT > 0) AS T
3 авг 16, 17:11    [19494408]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести количество имеющихся людей в базе данных по возрасту ?  [new]
xenix
Guest
ну можно попробовать слепить чего-то наподобие
WITH X AS
(
  SELECT D.ID_PERSON,  D.W,
    CASE
      WHEN YEAR(D.DR)BETWEEN 0 AND 10 THEN '0-10'
      WHEN YEAR(D.DR)BETWEEN 11 AND 20 THEN '11-20'
       ......
    END AS FLAG
   FROM db_person_fio D
)

SELECT C.W,COUNT(C.FLAG)CNT
FROM X AS C
JOIN db_person PERSON ON C.ID_PERSON=PERSON.ID
WHERE PERSON.STAT>0
GROUP BY C.W
3 авг 16, 17:42    [19494587]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить