powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Следующая зарплата после минимальной в SQL
7 сообщений из 7, страница 1 из 1
Следующая зарплата после минимальной в SQL
    #40015713
LiQuid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый.
Есть две таблицы:

Customers:
id, company_name, employee_name, salary, Order_id

Значения:
1, IBM, Boris Ivanov, 3000, 100
2, Microsoft, Petr Shuvalov, 2000, 110
3, Apple, Yevgeniy Zhukov, 5000, 110
4, Apple, Maxim Maximov, 7000, 100

Orders:
Order_id, Order_date

Значения:
100, '10-12-2019'
110, '30-01-2019'
120, '15-08-2018'

Связь между таблицами по FOREIGN KEY Customers(Order_id) -> PRIMARY KEY Orders(Order_id)

Нужно найти зарплату которая на уровень выше минимальной и вывести:

company_name, employee_name, order_date

В нашем примере это будет:

IBM, Boris Ivanov, '10-12-2019'

Не получается написать SQL запрос.

Спасибо.
...
Рейтинг: 0 / 0
Следующая зарплата после минимальной в SQL
    #40015726
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiQuid
Нужно найти зарплату которая на уровень выше минимальной и вывести:
А если нету?
...
Рейтинг: 0 / 0
Следующая зарплата после минимальной в SQL
    #40015734
LiQuid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Следующую минимальную зарплату после минимальной зарплаты смог найти, а как теперь вывести Company_name, Employee_name не получается.
Код: sql
1.
2.
Select MIN(Salary) From Customers
Where Salary > (Select MIN(Salary) From Customers)
...
Рейтинг: 0 / 0
Следующая зарплата после минимальной в SQL
    #40015736
LiQuid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел:

Код: sql
1.
2.
3.
SELECT c.COMPANY_NAME, c.EMPLOYEE_NAME, c.SALARY, o.ORDER_DATE from CUSTOMERS c, ORDERS o 
WHERE salary = (SELECT min(salary) from CUSTOMERS 
WHERE salary > (SELECT min(salary) from CUSTOMERS)) AND c.ORDER_ID = o.ORDER_ID;



Всем спасибо.
...
Рейтинг: 0 / 0
Следующая зарплата после минимальной в SQL
    #40015741
Dimbuch®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LiQuid,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
  SELECT a.COMPANY_NAME, a.EMPLOYEE_NAME, a.SALARY, a.ORDER_DATE 
FROM (
  SELECT c.COMPANY_NAME, c.EMPLOYEE_NAME, c.SALARY, o.ORDER_DATE, DENSE_RANK(c.SALARY) OVER (ORDER BY c.SALARY) as rnk
  FROM CUSTOMERS c
    INNER JOIN  ORDERS o
      ON o.ORDER_ID = c.ORDER_ID 
) a
WHERE a.rnk = 2
...
Рейтинг: 0 / 0
Следующая зарплата после минимальной в SQL
    #40015804
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiQuid
Нашел:

Код: sql
1.
2.
3.
SELECT c.COMPANY_NAME, c.EMPLOYEE_NAME, c.SALARY, o.ORDER_DATE from CUSTOMERS c, ORDERS o 
WHERE salary = (SELECT min(salary) from CUSTOMERS 
WHERE salary > (SELECT min(salary) from CUSTOMERS)) AND c.ORDER_ID = o.ORDER_ID;



Всем спасибо.


три вопроса и совет:

1) что должно вернуться если к примеру в таблице только один сотрудник?
2) что должно вернуться если к примеру в таблице кол-во сотрудников с зарплатой выше минимальной несколько?
3) что должно вернуться если к примеру в таблице у всех равная зарплата?

кто везде не пишет алисов для колонок и таблиц в итоге обречен на страдания.
...
Рейтинг: 0 / 0
Следующая зарплата после минимальной в SQL
    #40015851
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
;With lst as (
Select *
,DENSE_RANK() over (order by t.salary ASC) RN
from 
(Values
 (1, 'IBM', 'Boris Ivanov', 3000, 100)
,(11, 'IBM', 'Boris Ivanov1', 3000, 100)
,(2, 'Microsoft', 'Petr Shuvalov', 2000, 110)
,(21, 'Microsoft', 'Petr Shuvalov1', 2000, 110)
,(3, 'Apple', 'Yevgeniy Zhukov', 5000, 110)
,(4, 'Apple', 'Maxim Maximov', 7000, 100)
) t(id, company_name, employee_name, salary, Order_id)
)
Select id, company_name, employee_name, salary, Order_id
from lst
where RN = 2
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Следующая зарплата после минимальной в SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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