Типовые SQL-запросы
Для работы с базами данных в системе используются SQL-запросы. С их помощью можно создавать, редактировать и удалять таблицы, а также извлекать из них выборочную информацию.
За выполнение определенных действий в SQL-запросах отвечают операторы, например:
- CREATE TABLE — создание таблицы;
- DROP TABLE — удаление таблицы;
- INSERT INTO — добавление данных в таблицу.
Чтобы извлечь выборочную информацию, используются ключевые слова, например:
- WHERE — получение данных по условию;
- GROUP BY — создание групп данных.
Примеры SQL-запросов, использующихся в системе
Удаление части данных из таблицы по условию
ALTER TABLE
alter table `db-1`.`activity` delete
where `time` > (toStartOfDay(now()) - toIntervalDay(5))
Удаление таблицы
DROP TABLE
drop table `db-1`.`activity`
Удаление всех данных из таблицы
TRUNCATE TABLE
truncate table `db-1`.`activity`
Создание таблицы
CREATE TABLE
create table if not exists `db-1`.`activity`
(
time DateTime,
employee_account_id UInt64,
program String,
ui_hierarchy_name Array(String)
) ENGINE = MergeTree() order by id as
select
time,
employee_account_id,
program,
ui_hierarchy_name
from `db-11`.`activity`
where time > '2022-07-01 00:00:00'
Добавление данных в таблицу
INSERT INTO
insert into `db-1`.`activity`
(
time,
employee_account_id,
program,
ui_hierarchy_name
)
select
time,
employee_account_id,
program,
ui_hierarchy_name
from `db-11`.`activity`
where time > '2022-07-01 00:00:00'
Получение данных
SELECT
with
toUnixTimestamp(curr.time_1) - toUnixTimestamp(prev.time_1) as duration
Далее нужно использовать блок Вставить строку, чтобы рассчитанные данные попали в нужную таблицу:
select
curr.employee_id_1 as employee_id_2,
curr.employee_name_1 as employee_name_2,
curr.departments_1 as departments_2,
curr.time_1 as time_2,
toDateTime64(toDate(curr.time_1),3) as date_2,
curr.program_1 as program_2,
curr.action_1 as action_2,
if(duration < 5 * 60, duration, 1) as duration_2
from `db-10`.`step_1` as curr
asof left join `db-10`.`step_1` as prev on curr.employee_id_1 = prev.employee_id_1 and curr.time_1 > prev.time_1
Предыдущая
Следующая