powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывести в одном запросе количество из нескольких диапазонов
8 сообщений из 8, страница 1 из 1
Вывести в одном запросе количество из нескольких диапазонов
    #39700797
hatter11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добры день, у меня есть 6 запросов: вывести количество юзеров с датой рождения до 1960, с 1961 по 1970, с 1971 по 1980, с 1981 по 1990, с 1991 по 2000 и с 2000-го и выше
делаю как умею для каждого диапазона отдельный запрос, например:
SELECT count(birthday) FROM users WHERE DATE_FORMAT(birthday,"%Y") BETWEEN "1961" AND "1970"
но, я думаю, что можно одним запросом вывести результат сразу для всех шести диапазонов.
Подскажите, пожалуйста как это можно реализовать
...
Рейтинг: 0 / 0
Вывести в одном запросе количество из нескольких диапазонов
    #39700798
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hatter11Добры день, у меня есть 6 запросов: вывести количество юзеров с датой рождения до 1960, с 1961 по 1970, с 1971 по 1980, с 1981 по 1990, с 1991 по 2000 и с 2000-го и выше
делаю как умею для каждого диапазона отдельный запрос, например:
SELECT count(birthday) FROM users WHERE DATE_FORMAT(birthday,"%Y") BETWEEN "1961" AND "1970"
но, я думаю, что можно одним запросом вывести результат сразу для всех шести диапазонов.
Подскажите, пожалуйста как это можно реализовать

Код: sql
1.
2.
3.
4.
SELECT sum(case when DATE_FORMAT(birthday,"%Y") BETWEEN "1961" AND "1970" then 1 else 0 end) 
      ,sum(case when DATE_FORMAT(birthday,"%Y") BETWEEN "1971" AND "1980" then 1 else 0 end) 
...
  FROM users 
...
Рейтинг: 0 / 0
Вывести в одном запросе количество из нескольких диапазонов
    #39700803
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hatter11,

Буквы "S" и "Y" в английском - так похожи... не правда ли?
...
Рейтинг: 0 / 0
Вывести в одном запросе количество из нескольких диапазонов
    #39700805
hatter11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое, а если еще подскажите как оформить вывод красиво, вообще будет супер!! У меня выводятся столбцы с названием поля целым запросом:sum(case when DATE_FORMAT(birthday,"%Y") BETWEEN "1961" AND "1970" then 1 else 0 end)
а я бы хотела, например так:
"1961-1970" "1971-1980
...
Рейтинг: 0 / 0
Вывести в одном запросе количество из нескольких диапазонов
    #39700809
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hatter11,

про алиасы почитайте...
...
Рейтинг: 0 / 0
Вывести в одном запросе количество из нескольких диапазонов
    #39700812
hatter11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
получилось,спасибо)
...
Рейтинг: 0 / 0
Вывести в одном запросе количество из нескольких диапазонов
    #39700919
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT Period,[Количество юзеров с датой рождения]=COUNT(*) FROM
(
 SELECT Period=
  CASE
   WHEN birthday<'1960' THEN 'До 1960 года'
   WHEN birthday<'1971' THEN 'C 1961 до 1970'
   WHEN birthday<'1981' THEN 'C 1971 до 1980'
   WHEN birthday<'1991' THEN 'C 1981 до 1990'
   WHEN birthday<'2001' THEN 'C 1991 до 2000'
   ELSE 'После 2000'
  END
 FROM users
) T
GROUP BY Period
ORDER BY Period;
...
Рейтинг: 0 / 0
Вывести в одном запросе количество из нескольких диапазонов
    #39700921
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT Period,[Количество юзеров с датой рождения]=COUNT(*) FROM
(
 SELECT Period=
  CASE
   WHEN birthday<'1960' THEN 'До 1960 года'
   WHEN birthday<'1971' THEN 'C 1961 до 1970'
   WHEN birthday<'1981' THEN 'C 1971 до 1980'
   WHEN birthday<'1991' THEN 'C 1981 до 1990'
   WHEN birthday<'2001' THEN 'C 1991 до 2000'
   ELSE 'После 2000'
  END
 FROM users
) T
GROUP BY Period
ORDER BY Period;

Небольшая поправка:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT Period,[Количество юзеров с датой рождения]=COUNT(*) FROM
(
 SELECT Period=
  CASE
   WHEN birthday<'1960' THEN 'До 1960 года'
   WHEN birthday<'1971' THEN 'C 1960 до 1970'
   WHEN birthday<'1981' THEN 'C 1971 до 1980'
   WHEN birthday<'1991' THEN 'C 1981 до 1990'
   WHEN birthday<'2001' THEN 'C 1991 до 2000'
   ELSE 'После 2000'
  END
 FROM users
) T
GROUP BY Period
ORDER BY Period;
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывести в одном запросе количество из нескольких диапазонов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]