-eq
для численного сравнения ]
: Всего:
if [ ${#1} -eq 2 ]
then
echo "It's two characters long"
fi
Оконные функции - ваш друг (требуется 3.25 или новее):
SELECT user, score
FROM (SELECT user, score,
row_number() OVER (PARTITION BY user ORDER BY score DESC) AS rn
FROM test)
WHERE rn <= 3
ORDER BY user, score DESC;
Вам нужно создать другую таблицу для хранения результата вывода, в моем примере я назвал ее outputresult (user, score) :
Declare @duser nvarchar(30)
Declare @duser2 nvarchar(30)
Declare @dscore int
DECLARE cur1 CURSOR FOR
select distinct [user] from TOP3s
OPEN cur1
FETCH NEXT FROM cur1 INTO @duser
WHILE @@Fetch_Status = 0
BEGIN
Declare cur2 Cursor FOR
select top (3) [user], score from TOP3s where [user] = @duser order by [user], score desc
OPEN cur2
fetch next from cur2 into @duser2, @dscore
WHILE @@Fetch_Status = 0
begin
insert into outputresult values(@duser2, @dscore)
fetch next from cur2 into @duser2, @dscore
end
close cur2
deallocate cur2
FETCH NEXT FROM cur1 INTO @duser
end
close cur1
Deallocate cur1
--you can run this query to check the output:
select * from outputresult