Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применяется:
Databricks SQL
Databricks Runtime 16.2 и выше
Обрабатывает результат предыдущего запроса с использованием цепной операции.
Синтаксис
{ SELECT clause [ GROUP BY grouping_expr [ AS column_alias ] [, ...] ] |
EXTEND { expression [ [ AS ] column_alias ] } [ , ...] |
SET { column_name = expression } [, ...] |
DROP column_name [, ...] |
AS table_alias |
WHERE clause |
{ LIMIT clause |
OFFSET clause |
LIMIT clause OFFSET clause } |
aggregation |
JOIN clause |
ORDER BY clause |
set_operator |
TABLESAMPLE clause
PIVOT clause
UNPIVOT clause }
aggregation
AGGREGATE aggregate_expr [ [ AS ] column_alias ] [, ...]
[ GROUP BY grouping_expr [AS column_alias ] ]
Параметры
предложение SELECT
Собирает столбцы, возвращаемые в результате запроса, включая выполнение выражений и дедупликацию.
В Databricks Runtime 18.0 или более поздней версии список столбцов может содержать статистические функции. Необязательное
GROUP BYпредложение указывает выражения группировки, аSELECTоператор канала возвращает только выражения, предшествующие предложениюGROUP BY. ЕслиGROUP BYопущено, все строки рассматриваются как одна группа. Для более ранних версий используйтеAGGREGATEоперацию.GROUP BY
Указывает, по каким выражениям группируются строки. Если не указано, все строки обрабатываются как одна группа.
-
Выражение, определяющее столбцы группировки. Дополнительные сведения см. в GROUP BY.
-
Необязательный идентификатор столбца, именующий результат выражения группировки. Если
column_aliasне указан, Azure Databricks наследует его.
-
РАСШИРЕНИЕ
Добавляет новые столбцы в список выбора запроса.
-
Сочетание одного или нескольких значений, операторов и функций SQL, которые оценивают значение.
expressionмогут содержать ссылки на столбцы в списке выбора запросов, а также на предыдущиеcolumn_aliasв этом условииEXTEND. -
Необязательный идентификатор столбца, именующий результат выражения. Если
column_aliasне предоставляется, Azure Databricks является производным.
-
SET
Заменяет существующие столбцы в списке выборки запроса новыми значениями.
Операция выполняется в порядке появления в условии
SET. Результат любого выражения может быть отражением изменений в столбцах, обновленных предыдущими выражениями.-
Имя столбца, который нужно обновить. Если столбец не существует, Azure Databricks вызывает ошибку UNRESOLVED_COLUMN.
выражение
Сочетание одного или нескольких значений, операторов и функций SQL, которые оценивают значение.
-
DROP column_name [, ...]
Удаляет столбцы из списка выбора запроса.
Если столбец не существует, Azure Databricks вызывает ошибку UNRESOLVED_COLUMN.
КАК table_alias
Назначает имя результату запроса.
-
Фильтрует результат запроса на основе предоставленных предикатов.
-
Ограничивает максимальное количество строк, которые могут быть возвращены запросом. Это условие обычно следует за ORDER BY, чтобы обеспечить детерминированный результат.
-
Пропускает ряд строк, возвращаемых запросом. Это условие обычно используется в сочетании с LIMIT по страницы по результирующему набору и ORDER BY для получения определенного результата.
агрегирования
Агрегирует результирующий набор запроса на основе предоставленных выражений и необязательных выражений группировки.
Эта операция создает результирующий набор, в котором столбцы группировки отображаются перед агрегированными столбцами.
АГРЕГАТ
Задает выражения для агрегирования.
-
Выражение, содержащее одну или несколько агрегатных функций. Дополнительные сведения см. в GROUP BY.
-
GROUP BY
Указывает, по каким выражениям группируются строки. Если не указано, все строки обрабатываются как одна группа.
-
Необязательный идентификатор столбца, именующий результат выражения. Если
column_aliasне предоставляется, Azure Databricks является производным.
-
Объединяет два или более отношения с использованием операции соединения. Дополнительные сведения см. в JOIN.
-
Упорядочивает строки результирующего набора запроса. Выходные строки упорядочены по секциям. Этот параметр является взаимоисключающим с
SORT BY,CLUSTER BYиDISTRIBUTE BYи не может быть указан вместе. -
Объединяет запрос с одним или несколькими вложенными запросами с помощью
UNION,EXCEPTили операторовINTERSECT. -
Уменьшает размер результирующего набора, выбирая только часть строк.
-
Используется для перспективы данных. Агрегированные значения можно получить на основе определенных значений столбцов. Дополнительные сведения см. в PIVOT.
-
Используется для перспективы данных. Можно разделить несколько групп столбцов на строки. Дополнительные сведения см. в UNPIVOT.
Примеры
-- This query
> FROM customer
|> LEFT OUTER JOIN orders ON c_custkey = o_custkey
AND o_comment NOT LIKE '%unusual%packages%'
|> AGGREGATE COUNT(o_orderkey) c_count
GROUP BY c_custkey
|> AGGREGATE COUNT(*) AS custdist
GROUP BY c_count
|> ORDER BY custdist DESC, c_count DESC;
is equivalent to:
> SELECT c_count, COUNT(*) AS custdist
FROM
(SELECT c_custkey, COUNT(o_orderkey) c_count
FROM customer
LEFT OUTER JOIN orders ON c_custkey = o_custkey
AND o_comment NOT LIKE '%unusual%packages%' GROUP BY c_custkey
) AS c_orders
GROUP BY c_count
ORDER BY custdist DESC, c_count DESC;
-- Using the SELECT clause following a FROM clause
> CREATE TABLE t AS VALUES (0), (1) AS t(col);
> FROM t
|> SELECT col * 2 AS result;
result
------
0
2
-- Adding columns to the result set
> VALUES (0), (1) tab(col)
|> EXTEND col * 2 AS result;
col result
--- ------
0 0
1 2
-- Replacing an expression
> VALUES (0), (1) tab(col)
|> SET col = col * 2;
col
---
0
2
-- Removing a column from the result set
> VALUES (0, 1) tab(col1, col2)
|> DROP col1;
col2
----
1
-- Using a table alias
> VALUES (0, 1) tab(col1, col2)
|> AS new_tab
|> SELECT col1 + col2 FROM new_tab;
col1 + col2
1
-- Filtering the result set
> VALUES (0), (1) tab(col)
|> WHERE col = 1;
col
---
1
-- Using LIMIT to truncate the result
> VALUES (0), (0) tab(col)
|> LIMIT 1;
col
---
0
-- Full-table aggregation
> VALUES (0), (1) tab(col)
|> AGGREGATE COUNT(col) AS count;
count
-----
2
-- Aggregation with grouping
> VALUES (0, 1), (0, 2) tab(col1, col2)
|> AGGREGATE COUNT(col2) AS count GROUP BY col1;
col1 count
---- -----
0 2
-- Using JOINs
> SELECT 0 AS a, 1 AS b
|> AS lhs
|> JOIN VALUES (0, 2) rhs(a, b) ON (lhs.a = rhs.a);
a b c d
--- --- --- ---
0 1 0 2
> VALUES ('apples', 3), ('bananas', 4) t(item, sales)
|> AS produce_sales
|> LEFT JOIN
(SELECT "apples" AS item, 123 AS id) AS produce_data
USING (item)
|> SELECT produce_sales.item, sales, id;
item sales id
--------- ------- ------
apples 3 123
bananas 4 NULL
-- Using ORDER BY
> VALUES (0), (1) tab(col)
|> ORDER BY col DESC;
col
---
1
0
> VALUES (0), (1) tab(a, b)
|> UNION ALL VALUES (2), (3) tab(c, d);
a b
--- ----
0 1
2 3
-- Sampling the result set
> VALUES (0), (0), (0), (0) tab(col)
|> TABLESAMPLE (1 ROWS);
col
---
0
> VALUES (0), (0) tab(col)
|> TABLESAMPLE (100 PERCENT);
col
---
0
0
-- Pivoting a query
> VALUES
("dotNET", 2012, 10000),
("Java", 2012, 20000),
("dotNET", 2012, 5000),
("dotNET", 2013, 48000),
("Java", 2013, 30000)
AS courseSales(course, year, earnings)
|> PIVOT (
SUM(earnings)
FOR COURSE IN ('dotNET', 'Java')
)
year dotNET Java
---- ------ ------
2012 15000 20000
2013 48000 30000
-- Using | as the pipe token (DBR 18.0 and above)
> CREATE TABLE t AS VALUES (0, 1), (0, 2) AS t(a, b);
> FROM t
| WHERE a < 2
| SELECT a, SUM(b) AS total GROUP BY a;
a total
- -----
0 3
-- Using SELECT with aggregates and GROUP BY (DBR 18.0 and above)
> VALUES (0, 1), (0, 2), (1, 3) tab(a, b)
|> SELECT a, SUM(b) AS total GROUP BY a;
a total
- -----
0 3
1 3
-- Full-table aggregation using SELECT (DBR 18.0 and above)
> VALUES (0), (1), (2) tab(col)
|> SELECT SUM(col) AS total;
total
-----
3
-- Using UNPIVOT
> VALUES
("dotNET", 2012, 10000),
("Java", 2012, 20000),
("dotNET", 2012, 5000),
("dotNET", 2013, 48000),
("Java", 2013, 30000)
AS courseSales(course, year, earnings)
|> UNPIVOT (
earningsYear FOR `year` IN (`2012`, `2013`, `2014`)
course year earnings
-------- ------ --------
Java 2012 20000
Java 2013 30000
dotNET 2012 15000
dotNET 2013 48000
dotNET 2014 22500
Связанные статьи
- GROUP BY пункта
- JOIN
- LIMIT пункта
- OFFSET пункта
- ORDER BY пункта
- PIVOT пункта
- Операторы множеств
- ссылка на таблицы
- TABLESAMPLE пункта
- UNPIVOT пункта
- WHERE пункта
- синтаксис конвейера SQL
- запроса
- SELECT пункта