Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужна помощь с задачей / 6 сообщений из 6, страница 1 из 1
20.11.2019, 15:32
    #39891760
krayshon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с задачей
Для каждого месяца найти сотрудников с наивысшей премией, если премия за 1 месяц у нескольких сотрудников оказалась одинаковая, выбрать всех таких сотрудников.

Есть 2 варианта, но они оба не полностью решают задачу, нужна помощь.
Код: sql
1.
2.
SELECT month,name, prem from t2, t1
where prem in (select max(prem) from t1) and t2.id = t1.Id_emp


данный вариант выводит только 1 сотрудника с макс премией за все месяцы.
Код: sql
1.
2.
SELECT month,name,MAX(prem) over(partition by month ) as Max_Prem from t1, t2
where t2.id = t1.Id_emp


данный вариант выводит максимальную премию за месяц и присваивает ее всем строкам в этом месяце и так с каждым.
...
Рейтинг: 0 / 0
20.11.2019, 15:38
    #39891770
londinium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с задачей
покажите, пожалуйста, примеры таблиц с данными
...
Рейтинг: 0 / 0
20.11.2019, 15:41
    #39891774
krayshon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с задачей
londinium
покажите, пожалуйста, примеры таблиц с данными

t2:
-id
-name

t1:
-id_emp (внешний ключ таблицы t2)
-month
-prem
...
Рейтинг: 0 / 0
20.11.2019, 15:51
    #39891786
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с задачей
krayshon,

Код: sql
1.
2.
3.
4.
SELECT TOP (1) WITH TIES
[month],name, prem 
FROM t2 INNER join t1 ON t2.id_emp = t1.id
ORDER BY rank() OVER (PARTITION BY [MONTH] ORDER BY prem DESC)
...
Рейтинг: 0 / 0
20.11.2019, 15:53
    #39891789
londinium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с задачей
автор-id_emp (внешний ключ таблицы t2)
-month
-prem

попробуйте что-тов таком духе
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
WITH CTE AS
(
  SELECT T.ID_EMP,T.MONTH,T.PREM,
  RANK()OVER(PARTITION BY T.MONTH ORDER BY T.PREM DESC)AS XCOL
  FROM T1 AS T
)
SELECT C.ID,C.MONTH,C.PREM
FROM CTE AS C
WHERE C.XCOL=1
...
Рейтинг: 0 / 0
20.11.2019, 15:54
    #39891791
krayshon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с задачей
Minamoto
krayshon,

Код: sql
1.
2.
3.
4.
SELECT TOP (1) WITH TIES
[month],name, prem 
FROM t2 INNER join t1 ON t2.id_emp = t1.id
ORDER BY rank() OVER (PARTITION BY [MONTH] ORDER BY prem DESC)


благодарю
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужна помощь с задачей / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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