Top.Mail.Ru
Типовые SQL-запросы
8 800 555-89-02
Документация
CTRL+K
Standalone 2306
SaaS

Типовые 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

Была ли статья полезна?

Да
Нет
Предыдущая
Запуск скрипта
8 (800) 555-89-028 (495) 150-31-45team@infomaximum.com
Для бизнеса
© 20102024. ООО «Инфомаксимум»
Мы используем файлы cookies, чтобы сайт был лучше для вас.