Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
CREATE TABLE Продажи ( Магазин VARCHAR(255), Товар VARCHAR(255), Дата DATE, Продавец VARCHAR(255), Колличество INT ); INSERT INTO Продажи (Магазин,Товар,Дата,Продавец,Колличество) VALUES ('M1', 'T1', '2010-01-01', 'P1', 2), ('M1', 'T1', '2010-01-05', 'P2', 1), ('M1', 'T1', '2010-01-29', 'P1', 3), ('M2', 'T1', '2010-01-15', 'P2', 1), ('M1', 'T1', '2010-02-28', 'P1', 3), ('M1', 'T1', '2010-03-10', 'P2', 2), ('M2', 'T1', '2010-04-15', 'P1', 1); ------------------------------------------------------------------- ------------------------------------------------------------------- WITH ranked_sales AS ( SELECT Магазин, Товар, Дата, Продавец, Колличество, ROW_NUMBER() OVER (PARTITION BY Магазин, Товар ORDER BY Дата) AS ordNo FROM Продажи ), lagged_sales AS ( SELECT r.*, LAG(Дата) OVER (PARTITION BY r.Магазин, r.Товар ORDER BY r.Дата) AS prevDate FROM ranked_sales r ) SELECT Магазин, Товар, Дата, Продавец, Колличество, CASE WHEN DATEDIFF(DAY, prevDate, Дата) >= 30 OR prevDate IS NULL THEN Дата ELSE prevDate END AS Новая_Дата FROM lagged_sales ORDER BY Магазин, Товар, ordNo;

Stuck with a problem? Got Error? Ask AI support!

Copy Clear