SQLize
Online
/
PHPize Online
/
SQLtest Online
A
A
A
Share
Donate
Blog
Popular
Donate
A
A
A
Share
Blog
Popular
SQLize.online is a free online SQL environment for quickly running, experimenting with and sharing code.
You can run your SQL code on top of the most popular RDBMS including MySQL, MariaDB, SQLite, PostgreSQL, Oracle and Microsoft SQL Server.
SQL code:
Upload
Copy
Format
Clear
create table #calendar (dt date, type varchar(10)) insert into #calendar (dt, type) values ('2021-04-30', 'work'), ('2021-05-01', 'hol'), ('2021-05-02', 'hol'), ('2021-05-03', 'hol'), ('2021-05-04', 'hol'), ('2021-05-05', 'hol'), ('2021-05-06', 'hol'), ('2021-05-07', 'hol'), ('2021-05-08', 'hol'), ('2021-05-09', 'hol'), ('2021-05-10', 'hol'), ('2021-05-11', 'work'), ('2021-05-12', 'work'), ('2021-05-13', 'work'), ('2021-05-14', 'work'), ('2021-05-15', 'hol'), ('2021-05-16', 'hol'), ('2021-05-17', 'work'), ('2021-05-18', 'work'), ('2021-05-19', 'work'), ('2021-05-20', 'work'), ('2021-05-21', 'work'), ('2021-05-22', 'hol'), ('2021-05-23', 'hol'), ('2021-05-24', 'work'), ('2021-05-25', 'work'), ('2021-05-26', 'work'), ('2021-05-27', 'work'), ('2021-05-28', 'work'), ('2021-05-29', 'hol'), ('2021-05-30', 'hol'), ('2021-05-31', 'work') create table #logs (deal_id int, status_id int, created_at datetime) insert into #logs (deal_id, status_id, created_at ) values (1, 1, '2021-05-12 18:54:00'), (1, 2, '2021-05-13 13:34:00'), (1, 3, '2021-05-17 14:39:00'), (1, 2, '2021-05-18 9:24:00'), (1, 3, '2021-05-18 9:24:00'), (1, 4, '2021-05-18 10:27:00'), (1, 5, '2021-05-19 13:00:00'), (1, 4, '2021-05-19 13:00:00'), (1, 5, '2021-05-24 8:06:00'), (2, 1, '2021-05-14 17:31:00'), (2, 2, '2021-05-17 14:39:00'), (3, 1, '2021-04-30 9:17:00'), (3, 2, '2021-05-11 15:21:00'), (3, 3, '2021-05-13 12:32:00'), (3, 2, '2021-05-13 12:33:00'), (3, 3, '2021-05-13 13:08:00'), (3, 4, '2021-05-14 6:31:00'), (3, 5, '2021-05-14 11:15:00'), (4, 1, '2021-05-14 12:05:00') /* Среднее время находения на каждом статусе по всем сделкам между отрезками без выходных дней (с учетом повторяющихся статусов), и количество повторов каждого статуса; */ -- посчитать кол-во минут между статусами внутри сделки исключая выходные -- попробовать через функцию lead -- получить среднее значение времени на каждом статусе -- посчитать количество повторов. -- Можно попробовать в отдельной таблице и приджойнить ее -- добавляю поля: -- next_created_at - дата создания следующего статуса в текущей сделке -- m_diff - время в минутах между статусами в текущей сделке -- результат записываю во временную таблицу #deals select *, lead(created_at) over(partition by deal_id order by created_at) as next_created_at, datediff(minute, created_at, lead(created_at) over(partition by deal_id order by created_at)) as m_diff into #deals from #logs -- определяю кол-во выходных дней между датой создания текущего статуса -- и датой создания следующего статуса -- результат записываю во временную таблицу #holidays select d.created_at, d.next_created_at, count(type) as hol_qty into #holidays from #deals d left join #calendar c on c.dt > cast(d.created_at as date) and c.dt < cast(next_created_at as date) and c.type = 'hol' group by d.created_at, d.next_created_at select d.deal_id, d.status_id, d.created_at, d.next_created_at, coalesce(d.m_diff - (h.hol_qty * 24 * 60), 0) as mins_in_statuses from #deals d left join #holidays h on h.created_at = d.created_at and h.next_created_at = d.next_created_at
SQL
Server:
MariaDB 11.4
MariaDB 11.5
MariaDB 10
MariaDB 10 Sakila (ReadOnly)
MySQL 5.7
MySQL 5.7 Sakila (ReadOnly)
MySQL 8.0
MySQL 8.0 Sakila (ReadOnly)
SQLite 3
SQLite 3 Preloaded
PostgreSQL 10 Bookings (ReadOnly)
PostgreSQL 11
PostgreSQL 12
PostgreSQL 13
PostgreSQL 14
PostgreSQL 15
MS SQL Server 2017
MS SQL Server 2019
MS SQL Server 2022
MS SQL Server 2022 AdventureWorks (ReadOnly)
Firebird 4.0
Firebird 4.0 (Employee)
Oracle Database 19c (HR)
Oracle Database 21c
Oracle Database 23c Free
SOQOL
Version
ER Diagram
Preserve result
Stuck with a problem?
Got Error?
Ask ChatGPT!
Result:
Copy
Clear