пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Віконна функція ROW_NUMBER()

Існують різні віконні функції. ROW_NUMBER() OVER може бути використана для простого обмеження кількості отриманих рядків. Наприклад, для повернення не більше 10 рядків:

SELECT * FROM (
  SELECT
    ROW_NUMBER() OVER (ORDER BY KEY ASC) AS rownumber,
    COLUMNS
  FROM tablename
) AS foo
WHERE rownumber <= 10

ROW_NUMBER може бути недетермінованим: якщо key не унікальний, кожен раз при виконанні запиту можливе присвоєння різних номерів рядкам, у яких key збігається. Колиkey унікальний, кожен рядок буде завжди отримувати унікальний номер рядка.

Віконна функція RANK()

Функція RANK() OVER працює майже так само, як ROW_NUMBER, але може повернути більш ніж n рядків при певних умовах. Наприклад, для отримання топ-10 наймолодших людей:

SELECT * FROM (
  SELECT
    RANK() OVER (ORDER BY age ASC) AS ranking,
    person_id,
    person_name,
    age
  FROM person
) AS foo
WHERE ranking <= 10

Даний код може повернути більш ніж 10 рядків. Наприклад, якщо є дві людини з однаковим віком, то він поверне 11 рядків.

Нестандартний синтаксис

Не всі СКБД підтримують вище вказані віконні функції. При цьому більшість мають не стандартний синтаксис для рішення тих самих задач. Нижче представлені варіантипростого обмеження вибірки для різних СКБД:

MySQL        SELECT * FROM T LIMIT 10


хиты: 175
рейтинг:0
Точные науки
информатика
Структуры данных
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь