SQL ORDER BY
Клаузула ORDER BY позволяет указать порядок строк в результате запроса. На практике вы используете ORDER BY, чтобы указать, по какому полю(ям) вы хотите упорядочить данные и в каком порядке (по возрастанию или убыванию). Это полезно при проведении разовых анализов и для создания соответствующих значений столбцов для разделенных строк в оконных функциях.
Как использовать SQL ORDER BY
Клаузулы ORDER BY имеют множество применений в аналитической работе, но чаще всего их используют для:
- Упорядочивания результата запроса или подзапроса по столбцу или группе столбцов
- Соответствующего упорядочивания подмножества строк в оконной функции
Чтобы использовать ORDER BY в запросе или модели, используйте следующий синтаксис:
select
column_1,
column_2
from source_table
order by <field(s)> <asc/desc> -- идет после FROM, WHERE и GROUP BY
Вы можете упорядочить результат запроса по нескольким столбцам, указав их имя или номер в операторе select (например, order by column_2 == order by 2
). Вы также можете указать тип упорядочивания (по возрастанию или убыванию), чтобы получить нужный порядок строк.
Давайте рассмотрим практический пример использования ORDER BY.
Пример ORDER BY
select
date_trunc('month, order_date') as order_month,
round(avg(amount)) as avg_order_amount
from {{ ref('orders') }}
group by 1
order by 1 desc
Этот запрос, использующий таблицу orders
из Jaffle Shop, вернет округленную сумму заказов за каждый месяц в порядке убывания:
order_month | avg_order_amount |
---|---|
2018-04-01 | 17 |
2018-03-01 | 18 |
2018-02-01 | 15 |
2018-01-01 | 17 |
Синтаксис SQL ORDER BY в Snowflake, Databricks, BigQuery и Redshift
Поскольку ORDER BY является основой SQL, все хранилища данных, включая Snowflake, Databricks, Google BigQuery и Amazon Redshift, поддерживают возможность добавления клаузул ORDER BY в запросы и оконные функции.