CREATE TABLE AS#

Синтаксис#

CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ] table_name [ ( column_alias, ... ) ]
[ COMMENT table_comment ]
[ WITH ( property_name = expression [, ...] ) ]
AS query
[ WITH [ NO ] DATA ]

Описание#

Создает новую таблицу, содержащую результат запроса SELECT. Для создания пустой таблицы используйте CREATE TABLE.

Необязательное предложение OR REPLACE заменяет существующую таблицу с указанным именем новым определением таблицы. Поддержка замены таблиц зависит от коннектора. Подробности см. в документации коннектора.

Необязательное предложение IF NOT EXISTS подавляет ошибку, если таблица уже существует.

OR REPLACE и IF NOT EXISTS нельзя использовать вместе.

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

SELECT * FROM system.metadata.table_properties

Примеры#

Создать новую таблицу orders_column_aliased с результатами запроса и заданными именами столбцов:

CREATE TABLE orders_column_aliased (order_date, total_price)
AS
SELECT orderdate, totalprice
FROM orders

Создать новую таблицу orders_by_date, которая агрегирует orders:

CREATE TABLE orders_by_date
COMMENT 'Summary of orders by date'
WITH (format = 'ORC')
AS
SELECT orderdate, sum(totalprice) AS price
FROM orders
GROUP BY orderdate

Создать таблицу orders_by_date, если она еще не существует:

CREATE TABLE IF NOT EXISTS orders_by_date AS
SELECT orderdate, sum(totalprice) AS price
FROM orders
GROUP BY orderdate

Создать новую таблицу empty_nation с той же схемой, что и nation, но без данных:

CREATE TABLE empty_nation AS
SELECT *
FROM nation
WITH NO DATA

См. также#

CREATE TABLE, SELECT