Фактический SQL намного сложнее, поэтому я упрощаю, используя пример, который я использовал для работы с SQL.
Я не могу использовать RANK () по определенным причинам.
Яиспользуя это как ссылку для имитации RANK (с некоторыми изменениями в структуре таблицы в соответствии с моими целями): https://www.1keydata.com/sql/sql-rank.html
Я хочу получить идентификатор и максимальный ранг продавца Джон.SQL должен включать в себя оператор select в конце как подзапрос без каких-либо изменений (в моем случае предложение ORDER BY является существенным, хотя в приведенном ниже SQL это довольно неактуально).Выход должен быть
id max_rank
1 4
8 5
7 6
9 7
6 7
5 9
DDL
create table total_sales (id int, name varchar(20), sales int);
insert into total_sales values (1, 'John', 60);
insert into total_sales values (2, 'John', 61);
insert into total_sales values (3, 'John', 62);
insert into total_sales values (4, 'John', 63);
insert into total_sales values (5, 'Jennifer', 15);
insert into total_sales values (6, 'Stella', 20);
insert into total_sales values (7, 'Sophia', 40);
insert into total_sales values (8, 'Greg', 50);
insert into total_sales values (9, 'Jeff', 20);
SQL
SELECT a1.id, a1.Name, a1.Sales, COUNT (a2.Sales) Sales_Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales < a2.Sales OR (a1.Sales=a2.Sales AND a1.Name = a2.Name)
GROUP BY a1.id, a1.Name, a1.Sales
ORDER BY sales_rank desc