Postgresql вывести первые 10 строк

Совместимость

Выражение TOP не влияет на другие выражения, которые могут быть запущены триггером. Таблицы inserted и deleted в триггерах всегда возвращают только те строки, которые реально затронуты инструкциями INSERT, UPDATE, MERGE или DELETE. Например, если INSERT TRIGGER срабатывает в результате выполнения инструкции INSERT с предложением TOP,

то SQL Server позволяет обновлять строки через представления. Так как предложение TOP можно включать в определение представления, некоторые строки могут исчезнуть из представления после обновления, если они больше не соответствуют требованиям выражения TOP.

При использовании в инструкции MERGE предложение TOP применяется после соединения всей исходной таблицы и всей целевой таблицы, а также удаления соединенных строк, которые не соответствуют требованиям к вставке, обновлению или удалению. Предложение TOP дополнительно сокращает количество соединенных строк до указанного значения, а затем к оставшимся соединенным строкам применяются операции вставки, обновления или удаления без определенного порядка. Это означает, что порядок распределения строк по действиям, определенным в предложениях WHEN отсутствует. Например если TOP (10) в запросе затрагивает 10 строк, в их число могут попасть 7 обновляемых и 3 добавляемые строки. Или же 1 строка будет удаляемая, 5 обновляемых и 4 добавляемые строки либо любой другой вариант. Инструкция MERGE выполняет полное сканирование исходной и целевой таблиц, поэтому предложение TOP для изменения большой таблицы путем создания нескольких пакетов может снизить производительность ввода-вывода. В этом случае необходимо сделать так, чтобы все последующие пакеты содержали только новые строки.

Соблюдайте осторожность при использовании предложения TOP в запросе, содержащем операторы UNION, UNION ALL, EXCEPT и INTERSECT. Есть вероятность того, что результаты запроса будут непредсказуемыми из-за неожиданной логики обработки предложений TOP и ORDER BY в операции выбора

Например, исходя из следующих таблиц и данных, предположим, что необходимо вернуть самый недорогой красный и синий автомобили. Иными словами, красный седан и синий фургон.

Чтобы получить такие результаты, можно написать следующий запрос.

Ниже приведен результирующий набор.

Использование TOP и ORDER BY во вложенной операции выбора гарантирует, что результаты предложения ORDER BY применяются к предложению TOP, а не к сортировке результата операции UNION.

Результирующий набор:

MySQL SQL Limit Feature: The SQL LIMIT Keyword

In MySQL, you can use the LIMIT clause to restrict the number of rows returned by a SELECT query. You provide two parameters: the offset number, and the count (the maximum number of rows to be returned).

The syntax of this in MySQL is:

We can use this on our sample database. Let’s say we wanted to find the top 5 customers by revenue in descending order. Our query would look like this:

The results would look like this:

CUSTOMER_ID REVENUE
2 9384760
10 5131750
11 4431791
8 4341421
4 3596297

This table shows the top 5 results ordered by revenue in descending order. The LIMIT clause in MySQL is easy to use and is the most common way of limiting the top results in MySQL. For more information on the MySQL row limiting feature, look at the official documentation.

Fetch the Top X Percent of Rows in Oracle

You can use the Oracle row limiting clause to get the top percentage of rows. This is done using the PERCENT keyword within this clause.

Let’s take a look at this query:

We’ve added the PERCENT keyword into the FETCH clause to indicate we only want to see the top 25% of rows. This top 25% is calculated by ordering the revenue in descending order, as specified by the ORDER BY clause.

The results of this query are:

CUSTOMER_ID REVENUE
2 9384760
10 5131750
11 4431791
8 4341421

There are 4 rows shown because the table has 13 rows. 25% of 13 is 3.25, which is rounded up to 4.

You can use the same concept to get the last percentage of rows. Rather than changing the FIRST keyword to LAST, you can change the ORDER BY to sort in the opposite direction. This example shows ORDER BY revenue ASC instead of ORDER BY revenue DESC:

This will show the lowest 25% of customers according to their revenue.

CUSTOMER_ID REVENUE
5 82495
1 109470
12 245583
7 654796

Limitations and Restrictions

When you use TOP with INSERT, UPDATE, MERGE, or DELETE, the referenced rows aren’t arranged in any order. And, you can’t directly specify the ORDER BY clause in these statements. If you need to use TOP to insert, delete, or modify rows in a meaningful chronological order, use TOP with an ORDER BY clause specified in a subselect statement. See the following Examples section in this article.

You can’t use TOP in an UPDATE and DELETE statements on partitioned views.

You can’t combine TOP with OFFSET and FETCH in the same query expression (in the same query scope). For more information, see ORDER BY Clause (Transact-SQL).

Как в Oracle выбрать первые N записей

Если в таблице много записей, то порой достаточно выбрать первый десяток.

В других СУБД для этого изначально были специальные конструкции в языке SQL. В Oracle всё это появилось гораздо позже.

Есть несколько популярных способов. Каждый имеет плюсы и минусы, ну и от версии зависит.

Первый способ. С помощью конструкции «SELECT FROM SELECT»

Делаем два запроса: сначала сортируем, затем выбираем нужное количество.

Конструкции SELECT-FROM-SELECT в Oracle 7 не было и приходилось изгалятся ещё круче. Но эти коды уже канули в прошлое.

Второй сопособ. «Классика».

С виду похож на первый способ, но на самом деле более универсальный. Позволяет получить не только первую десятку, но и вторую, третью и т.д

Просто надо переписать последюю строку в как-то так: WHERE 0 Третий способ . «Новомодный». Работает в Oracle 12c.

SQL TOP Clause with SQL Delete statement

We can use TOP Clause in a SQL delete statement with the combination of SQL Select statement as the subquery with where clause

Example 8: Write SQL query to remove top 2 fail student data from the result table

  • In the above query, the SQL TOP clause is in the subquery to retrieve the top 2 student’s student IDs in the order of obtaining marks
  • The outer query of SQL delete will remove all records from the result table where result table student_id is matched with the student_id of the result of the subquery
  • when we execute the above query it shows a message like three rows has been deleted, as the result table contains three records that matched with the student ID of the subquery

OUTPUT:

To see the effect of above SQL delete query , we need to use SQL Select query to retrieve all records of result table

Introduction

The TOP clause allows us to limit the result set of the queries according to the number of rows or the percentage of
rows. In general, the TOP and ORDER BY construction are used together. Otherwise, the TOP clause will return the N
number of rows in an uncertain order. For this reason, it is the best practice to use the TOP clause with an ORDER
BY to obtain a certain sorted result.

The syntax of the TOP clause is as follows:

1
2
3
4

SELECTTOP(expression)PERCENT

WITHTIES

FROM

table_name

Expression

This numerical expression defines how many rows are returned from the query. For instance, when we want to return
the first 10 rows of the table we can set this parameter as 10. In this example, we retrieve random 5 rows from the
Product table.

1
2
3
4

SELECTTOP(5)Name,

ProductNumber,

StandardCost

FROMProduction.Product;

PERCENT

The PERCENT keyword specifies that the query will return rows by %n proportion of the result set. This value must be
between 0 and 100. Such as, if we want to retrieve half of the rows in a table, it would be sufficient to set this
value to 50. The following query will return 20 percent of rows in the table.

1
2
3
4

SELECTTOP(20)PERCENTName,

ProductNumber,

StandardCost

FROMProduction.Product;

WITH TIES

The WITH TIES keyword enables to include the rows into the result set that matches with the last
row. We need to take into account one point about the WITH TIES, usage of this expression in the queries may cause
more rows to be returned than we specify in the TOP expression. For example, if we want to retrieve the highest cost
product we can use the TOP 1 keyword. However, if we add the WITH TIES keyword to the SQL SELECT TOP statement, the
query will return all rows which have the same cost. WITH TIES keyword must be used with the ORDER BY. Let’s execute
the following query and then interpret the result.

1
2
3
4
5

SELECTTOP(1)WITHTIESName,

ProductNumber,

StandardCost

FROMProduction.Product

ORDERBYStandardCostDESC

As we can see, the query has returned more than one product whose costs are the same as the first one.

Best Practices

In a SELECT statement, always use an ORDER BY clause with the TOP clause. Because, it’s the only way to predictably indicate which rows are affected by TOP.

Use OFFSET and FETCH in the ORDER BY clause instead of the TOP clause to implement a query paging solution. A paging solution (that is, sending chunks or «pages» of data to the client) is easier to implement using OFFSET and FETCH clauses. For more information, see ORDER BY Clause (Transact-SQL).

Use TOP (or OFFSET and FETCH) instead of SET ROWCOUNT to limit the number of rows returned. These methods are preferred over using SET ROWCOUNT for the following reasons:

As a part of a SELECT statement, the query optimizer can consider the value of expression in the TOP or FETCH clauses during query optimization. Because you use SET ROWCOUNT outside of a statement that runs a query, its value can’t be considered in a query plan.

Example 3 – Use TOP With Ties

Now for the ties. Here’s what happens if we add .

SELECT TOP(3) WITH TIES
  AlbumId,
  AlbumName,
  ArtistId 
FROM Albums
ORDER BY ArtistId ASC;

Result:

+-----------+-------------------------+------------+
| AlbumId   | AlbumName               | ArtistId   |
|-----------+-------------------------+------------|
| 1         | Powerslave              | 1          |
| 7         | Somewhere in Time       | 1          |
| 8         | Piece of Mind           | 1          |
| 9         | Killers                 | 1          |
| 10        | No Prayer for the Dying | 1          |
+-----------+-------------------------+------------+

We now get five rows instead of just three. This is because there are two more rows that share the same as the third row. In other words, three rows were tying for last place.

Note that in SQL Server, the returned order of tying rows is arbitrary.

Рекомендации

В инструкции SELECT всегда указывайте ORDER BY вместе с предложением TOP. Дело в том, что это единственный предсказуемый способ отбора строк предложением TOP.

Для реализации решения разбиения на страницы пользуйтесь предложениями OFFSET и FETCH в предложении ORDER BY, а не предложением TOP. Решение разбиения на страницы (т.е. постраничной выдачи данных клиенту) проще реализовать с помощью предложений OFFSET и FETCH. Дополнительные сведения см. в разделе Предложение ORDER BY (Transact-SQL).

Для ограничения числа возвращаемых строк пользуйтесь TOP (или OFFSET и FETCH), а не SET ROWCOUNT. Эти методы предпочтительнее, чем SET ROWCOUNT, по следующим причинам:

Являясь частью инструкции SELECT, оптимизатор запросов может принимать значение expression в предложениях TOP или FETCH во время оптимизации запроса. Так как SET ROWCOUNT используется вне инструкции, выполняющей запрос, значение не может быть учтено в плане запроса.

Using the Percentage value with the TOP Clause

Are there times when you want to return some percentage of rows within a table?  When you have this requirement you can use the PERCENT option.  To demonstrate this review the code below:

SELECT TOP(13) PERCENT * FROM dbo.Sales
ORDER BY SalesAmount DESC; 

When I run this code it returns the following rows:

SalesID     SalesDate  Region     SalesAmount
----------- ---------- ---------- ---------------------
6           2014-12-01 SouthWest  1012.31
5           2014-12-01 NorthWest  400.78

In this example, I specified that I wanted to return 13 percent of the row.  Because I added the PERCENT clause to my SELECT TOP query this tells SQL Server the value provide is a percentage number instead of an integer number.  In the example above 13 percent of 12 rows (total number of rows in my table) is 1.56.  SQL Server returns two rows from this query because it took the calculated percentage value, 1.56 in this example, and rounded it up to 2.  If I had decided I only wanted 12 percent of the rows, which is 1.44 rows, SQL Server would have rounded down and returned only one row.    

Получаем первые строки результата SQL запроса

Сейчас давайте я покажу, как можно вывести первые строки результирующего набора данных, сначала мы рассмотрим пример с использованием TOP, а затем сделаем то же самое только с помощью OFFSET-FETCH.

Но для начала давайте определимся с исходными данными, чтобы Вы понимали, какие данные у нас есть и что мы получаем в итоге.

Исходные данные для примеров

В качестве сервера у меня выступает Microsoft SQL Server 2016 Express. А теперь давайте представим, что у нас есть таблица TestTable и в ней содержатся следующие данные (перечень товаров с указанием цены).

Получаем первые строки запроса с помощью TOP

TOP – это инструкция T-SQL, с помощью которой можно ограничить число строк в результирующем наборе данных SQL запроса.

Синтаксис

TOP (Число строк)

У инструкции TOP несколько параметров:

  • Число строк – сразу после ключевого слова TOP в скобочках мы указываем число, которое будет означать количество строк в итоговом результате. В инструкции SELECT допускается указание данного числа без скобочек, однако это не рекомендуется;
  • PERCENT – параметр, который говорит, что в запросе необходимо оставить не фактическое количество строк, а процент строк от общего количества, т.е. число, указанное ранее, будет означать процент, а не количество;
  • WITH TIES – параметр, который говорит, что в результирующий набор необходимо включить и записи с тем же значением, что и последняя строка, в случае наличия подобных записей. Например, если Вам нужно получить 5 самых дорогих товаров, при этом на пятом месте запись с ценой 100, а на шестом месте также цена 100, так вот, без параметра WITH TIES Вам вернётся 5 строк, а если данный параметр указать — вернется 6 строк.

Фильтр TOP обычно применяется с сортировкой данных (ORDER BY), однако это необязательно, можно применять данный фильтр и без сортировки данных, только в этом случае строки будут возвращаться в произвольном порядке (так, как они хранятся).

Пример SQL запроса с TOP – выводим первые 5 строк

Допустим, нам нужно получить 5 самых дорогих товаров, для этого пишем следующий запрос.

В данном случае мы указали сортировку по уменьшению цены (ORDER BY Price DESC), а также применили фильтр TOP (5), для ограничения вывода строк результирующего набора.

Пример SQL запроса с TOP и параметром WITH TIES

Сейчас давайте запустим два запроса, в обоих случаях мы будем запрашивать 4 самых дорогих товара, т.е. применим фильтр TOP (4), однако во втором запросе дополнительно мы укажем параметр WITH TIES и посмотрим на разницу итогового результата.

В итоге мы очень хорошо видим разницу, в первом случае вывелось 4 строки, а во втором 5, так как товар в 5 строке имеет точно такую же цену, как и товар в 4 строке.

Пример SQL запроса с TOP и параметром PERCENT

В этом примере давайте просто выведем 50 процентов итогового набора записей, т.е. половину. Для этого мы используем параметр PERCENT.

Так как у нас в таблице TestTable всего 8 записей, нам вывелось 4 строки, т.е. как раз 50 процентов.

Получаем первые строки запроса с помощью OFFSET-FETCH

Вторым способом получения первых строк является использование конструкции OFFSET-FETCH, однако она появилась только в 2012 версии SQL сервер, до этого, соответственно, этот способ использовать не получится.

У конструкции OFFSET-FETCH отсутствуют такие параметры, как PERCENT и WITH TIES, которые есть у фильтра TOP, однако у OFFSET-FETCH есть одно очень важное преимущество – это возможность пропускать определенное количество первых строк. Примечание! OFFSET-FETCH — это часть конструкции ORDER BY, поэтому без сортировки использовать OFFSET-FETCH не удастся

Также не получится одновременно использовать OFFSET-FETCH и TOP в одном запросе SELECT

Примечание! OFFSET-FETCH — это часть конструкции ORDER BY, поэтому без сортировки использовать OFFSET-FETCH не удастся. Также не получится одновременно использовать OFFSET-FETCH и TOP в одном запросе SELECT.

Пример SQL запроса с OFFSET-FETCH — выводим первые 5 строк

Чтобы вывести первые строки с помощью конструкции OFFSET-FETCH, нам нужно в секции OFFSET указать 0, т.е. начинать вывод сразу с первой строки (если указать другое число, то именно такое количество строк будет пропущено). В секции FETCH мы соответственно указываем 5.

Результат, мы видим, точно такой же, как и в случае с TOP.

Использование SELECT и предикатов IN, OR, BETWEEN, LIKE

Предикаты — слова IN, OR, BETWEEN, LIKE в секции WHERE — также позволяют выбрать определённые диапазоны значений (IN, OR, BETWEEN) или значения в строках (LIKE), которые требуется выбрать из таблицы. Запросы с предикатами IN, OR, BETWEEN имеют следующий синтаксис:

Запросы с предикатом LIKE имеют следующий синтаксис:

Пример 7. Пусть требуется выбрать из таблицы Staff имена, должности и число отработанных лет сотрудников, работающих в отделах с номерами 20 или 84. Это можно сделать следующим запросом (на MS SQL Server — с предваряющей конструкцией USE company1;):

Результат выполнения запроса:

На сайте есть подробный урок об использовании предиката IN.

Пример 8. Пусть теперь требуется выбрать из таблицы Staff те же данные, что и в предыдущем примере. Запрос со словом OR аналогичен запросу со словом IN и перечислением интересующих значений в скобках. Запрос будет следующим (на MS SQL Server — с предваряющей конструкцией USE company1;):

Пример 9. Выберем из той же таблицы имена, должности и число отработанных лет сотрудников, зарплата которых между 15000 и 17000 включительно (на MS SQL Server — с предваряющей конструкцией USE company1;):

Результат выполнения запроса:

На сайте есть подробный урок об использовании предиката BETWEEN.

Предикат LIKE используется для выборки тех строк, в значениях которых встречаются символы, указанные после предиката между апострофами (‘).

Пример 10. Выберем из той же таблицы имена, должности и число отработанных лет сотрудников, имена которых начинаются с буквы S и состоят из 7 символов (на MS SQL Server — с предваряющей конструкцией USE company1;):

Символ подчёркивания (_) означает любой символ. Результат выполнения запроса:

Пример 11. Выберем из той же таблицы имена, должности и число отработанных лет сотрудников, имена которых начинаются с буквы S и содержат любые другие буквы в любом количестве (на MS SQL Server — с предваряющей конструкцией USE company1;):

Символ процентов (%) означает любое количество символов. Результат выполнения запроса:

На сайте есть подробный урок об использовании предиката LIKE.

Значения, указанные с использованием предикатов IN, OR, BETWEEN, LIKE можно инвертировать при помощи слова NOT. Тогда запрашиваемые данные будут иметь противоположный смысл. Если мы используем NOT IN (20, 84), то будут выведены данные сотрудников, которые работают во всех отделах, кроме имеющих номера 20 и 84. С использованием NOT BETWEEN 15000 AND 17000 можно получить данные сотрудников, зарплата которых не входит в интервал от 15000 до 17000. Запрос с NOT LIKE выведет данные сотрудников, чьи имена не начинаются или не содержат символов, указанных с NOT LIKE.

Пример использования ключевого слова TOP PERCENT

Рассмотрим пример SQL Server, в котором мы используем ключевое слово TOP PERCENT в операторе SELECT.
Например:

Transact-SQL

SELECT TOP(10) PERCENT
employee_id, last_name, first_name
FROM employees
WHERE last_name = ‘Samson’
ORDER BY employee_id;

1
2
3
4
5

SELECTTOP(10)PERCENT

employee_id,last_name,first_name

FROMemployees

WHERElast_name=’Samson’

ORDERBYemployee_id;

Этот пример SQL Server SELECT TOP выберет первые 10% записей из полного набора результатов. Поэтому в этом примере оператора SELECT вернет 10% записей из таблицы employees, где last_name — ‘Samson’. Остальные 90% набора результатов не будут возвращены оператором SELECT.
Вы можете изменить этот пример, включив предложение WITH TIES следующим образом:

Transact-SQL

SELECT TOP(10) PERCENT WITH TIES
employee_id, last_name, first_name
FROM employees
WHERE last_name = ‘Samson’
ORDER BY employee_id;

1
2
3
4
5

SELECTTOP(10)PERCENTWITHTIES

employee_id,last_name,first_name

FROMemployees

WHERElast_name=’Samson’

ORDERBYemployee_id;

Предложение WITH TIES будет включать строки, которые могут быть связаны со строкой которая на последнем месте в ограниченном наборе результатов. Поэтому, если есть такие строки в наборе записей SELECT TOP (10) PERCENT, то эти связанные записи будут возвращены оператором SELECT TOP. Это приведет к возврату более 10% от полного набора записей.

Как выбрать последнюю запись таблицы в SQL?

Это пример кода для выбора всех записей из таблицы. Может ли кто-нибудь показать мне, как выбрать последнюю запись в этой таблице?

Когда я использую: SELECT * FROM TABLE ORDER BY ID DESC LIMIT я получаю эту ошибку: Строка 1: неправильный синтаксис рядом с «LIMIT». Это код, который я использую:

Без какой-либо дополнительной информации, какую базу данных и т. Д. Лучше всего мы можем сделать, это что-то вроде

SQL-сервер

MySql

чтобы получить последнюю строку в виде SQL-базы данных использовать эту строку SQL:

Последняя строка вашего БД!

Предполагая, что у вас есть столбец Id:

Кроме того, это будет работать на SQL Server. Думаю, что MySQL вам может понадобиться:

Но я не уверен в этом на 100%.

РЕДАКТИРОВАТЬ

Глядя на другие ответы, я теперь на 100% уверен, что прав с заявлением MySQL: o)

РЕДАКТИРОВАТЬ

Только что посмотрел ваш последний комментарий. Вы могли сделать:

Это даст вам наивысший номер идентификатора.

Да, это mysql, SQL Server:

В дизайне таблицы всегда рекомендуется использовать автоматический идентификатор строки, например

, то вы можете определить свою последнюю строку по

MS SQL Server уже FETCH FIRST много лет поддерживает ANSI SQL :

(Работает с большинством современных баз данных.)

Если у вас есть самоинкрементирующееся поле (скажем ID ), вы можете сделать что-то вроде: SELECT * FROM foo WHERE max(ID) FROM foo)

Последнее будет только первым, когда вы измените порядок.

Почти все ответы предполагают, что столбец идентификатора упорядочен (и, возможно, автоматически увеличивается). Однако бывают ситуации, когда столбец идентификатора не упорядочен, поэтому оператор ORDER BY не имеет смысла.

Последний вставленный идентификатор не всегда может быть наивысшим идентификатором, это просто последняя (уникальная) запись.

Одно из возможных решений в такой ситуации — создать идентификатор строки на лету:

показать путь: оконные функции

Я не рекомендую делать это, но, возможно, вы можете произвести хорошее впечатление на своего босса или что-то еще; -)

на самом деле это имеет то преимущество, что показывает, что простой запрос может быть выражен различными способами (есть несколько других, о которых я могу думать), и что выбор той или иной формы должен осуществляться в соответствии с несколькими критериями, такими как:

  • переносимость (реляционные/поучительные способы)
  • эффективность (реляционной)
  • выразительность (простой/поучительный способ)

выберите отметку времени, значение, карту Из таблицы my_table Заказать по метке времени DESC Предел 1

Источник

SQL Server SQL Limit Feature: The SQL Top Keyword

The way to perform row limiting in SQL Server is different from doing it in MySQL.

In SQL Server, you use the SQL TOP keyword rather than LIMIT. The SQL TOP keyword goes at the start of the query in the SELECT clause.

The syntax of a SELECT query that uses TOP is:

The word TOP goes just after the word SELECT, just like the DISTINCT keyword.

You can then specify either the number of rows to display or the percentage of rows from the result set to display.

Let’s look at an example using our sample data. If we wanted to find the same data as the earlier example (the top 5 customers ordered by revenue in descending order), our SQL query would look like this:

The output for this query would be:

CUSTOMER_ID REVENUE
2 9384760
10 5131750
11 4431791
8 4341421
4 3596297

It’s the same result as the MySQL LIMIT example. It shows the top 5 customers by revenue.

Both the MySQL and SQL Server features for row limiting or showing the top-N queries are simple. What about Oracle?

Засада с LAST_VALUE

Казалось бы, какая разница брать первое или последнее значение из случайным образом упорядоченного набора? Но давайте посмотрим, что мы получим, если в предыдущем запросе заменить FIRST_VALUE на LAST_VALUE:

Я приведу результаты только для id_comp = 1. Вы можете сами выполнить запрос, чтобы убедиться, что будут выводиться абсолютно все рейсы из таблицы Trip.

1

1181
1

1182
1

1187
1

1188
1

1195
1

1196

Что мы делаем в подобных случаях? Конечно, обращаемся к документации, а там мы читаем. Нет, постойте, сначала полный синтаксис:

Здесь IGNORE NULLS или RESPECT NULLS определяют, будут ли учитываться NULL-значения;предложение_rows_range задает параметры окна.

А теперь читаем:

Диапазоном по умолчанию является RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.

Т.е. окном является диапазон от текущей строки и неограниченно выше. Поскольку мы выбираем последнюю строку диапазона, то всегда будет выводиться текущая строка, как бы не сортировались строки. Т.е. сколько бы строк выше не оказалось при случайной сортировке.

Потому и DISTINCT не помогает, т.к. все выводимые строки оказываются уникальными.

Значит нам просто нужно явно (и правильно!) задать параметры окна, а именно, от текущей строки и неограниченно ниже, поскольку мы выбираем последнее значение:

Источник

TOP (Transact-SQL)

Applies to: SQL Server (all supported versions) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Limits the rows returned in a query result set to a specified number of rows or percentage of rows in SQL Server. When you use TOP with the ORDER BY clause, the result set is limited to the first N number of ordered rows. Otherwise, TOP returns the first N number of rows in an undefined order. Use this clause to specify the number of rows returned from a SELECT statement. Or, use TOP to specify the rows affected by an INSERT, UPDATE, MERGE, or DELETE statement.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: