MAX RANK с использованием неоконной функции - PullRequest
0 голосов
/ 27 ноября 2018

Фактический 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
...