powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Модернизировать запрос(группировка на возрастные категории)
3 сообщений из 3, страница 1 из 1
Модернизировать запрос(группировка на возрастные категории)
    #39966801
Kukuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно погруппировать людей по возрастным категориям. Я сделал это, но как-то очень странно, у меня 3 разные колонки, где ответ еденица или ноль. Как мне сделать, что бы была одна колонка "Возрастная категория" и туда уже записывались данные типа varchar, мол "Молодеж"/"Зрелые"/"Старые"?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
USE Personal 
SELECT 
    CONCAT( Surname,' ',LEFT(Firstname,1), '.', LEFT(Patronymic,1), '.') as ПІБ,
	Name_post as Посада,
    SizeSalary*Salary as Зарплата,
	DATEDIFF(yy,Birhtdate, '2020-12-31') as Вік_на_кінець_року,
	COUNT(CASE WHEN YEAR(GETDATE())-YEAR(Birhtdate) < 35 THEN 1 END) as Молодіж,
	COUNT(CASE WHEN YEAR(GETDATE())-YEAR(Birhtdate) > 35 AND YEAR(GETDATE())-YEAR(Birhtdate) < 60 THEN 1 END) as Зрілі,
	COUNT(CASE WHEN YEAR(GETDATE())-YEAR(Birhtdate) > 60 THEN 1 END) as Похилі
FROM Persona	p 
join Worker     w   on p.Id_man     = w.id_man 
join Post           on w.id_post    = Post.Id_post 
join Vacation   v   on p.Id_man     = v.id_man 
join Department d	on w.id_dep     = d.id_dep
WHERE main_work = 1 AND Education = 'вища'
Group by Surname, Firstname,Patronymic,Name_post,SizeSalary,Salary,Birhtdate
...
Рейтинг: 0 / 0
Модернизировать запрос(группировка на возрастные категории)
    #39966803
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kukuh,

вы прямо задаете отдельные колонки тут

Код: sql
1.
2.
3.
COUNT(CASE WHEN YEAR(GETDATE())-YEAR(Birhtdate) < 35 THEN 1 END) as Молодіж,
	COUNT(CASE WHEN YEAR(GETDATE())-YEAR(Birhtdate) > 35 AND YEAR(GETDATE())-YEAR(Birhtdate) < 60 THEN 1 END) as Зрілі,
	COUNT(CASE WHEN YEAR(GETDATE())-YEAR(Birhtdate) > 60 THEN 1 END) as Похилі



Один вложенный case вас спасет

Код: sql
1.
2.
3.
4.
5.
6.
имяколонки =
CASE 
WHEN YEAR(GETDATE())-YEAR(Birhtdate) < 35 THEN 'Молодіж'
WHEN YEAR(GETDATE())-YEAR(Birhtdate) > 35 AND YEAR(GETDATE())-YEAR(Birhtdate) < 60 THEN 'Зрілі'
ELSE ну или WHEN с условием  THEN 'Похилі'
END



Ну и делать COUNT на CASE вам зачем вообще? COUNT не нужен конечно. И вы уверены, что люди, которым 35 и 60 лет вас не интересуют?
...
Рейтинг: 0 / 0
Модернизировать запрос(группировка на возрастные категории)
    #39966804
Kukuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Вам большое! Я не досконально изучил эту тему и немного путался, делал глупости. Сессия на носу, приходиться делать все на скорую руку, как говориться :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Модернизировать запрос(группировка на возрастные категории)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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