Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
MindBoxTest(A.M.)
CREATE TABLE [Customers]( Id INT IDENTITY(1,1) NOT NULL, DisplayName VARCHAR(64) NULL, RegistrationDateTime DATETIME NULL, PRIMARY KEY (Id) ); GO CREATE TABLE [Items]( Id INT IDENTITY(1,1) NOT NULL, DisplayName VARCHAR(64) NULL, Price DECIMAL(13,2) NULL, PRIMARY KEY (Id) ); GO CREATE TABLE [Transactions]( Id INT IDENTITY(1,1) NOT NULL, CreatedDateTime DATETIME DEFAULT(GETDATE()) NULL, ItemId INT NOT NULL, CustomerId INT NOT NULL, PRIMARY KEY (Id), CONSTRAINT FK__Transactions__Items FOREIGN KEY (ItemId) REFERENCES [Items](Id), CONSTRAINT FK__Transactions__Customers FOREIGN KEY (CustomerId) REFERENCES [Customers](Id), ); GO DECLARE @Today datetime SET @Today = GETDATE() INSERT INTO [Customers] (DisplayName, RegistrationDateTime) VALUES ('Adam Sandler', @Today), ('John Weak', DATEADD(dd, -1, @Today)), ('Hikaru Nakamura', DATEADD(dd, -2, @Today)), ('Brother Hood', DATEADD(dd, -4, @Today)), ('Michael Warwick', DATEADD(dd, -6, @Today)), ('Suzan Bowl', DATEADD(dd, -9, @Today)); INSERT INTO [Items] (DisplayName, Price) VALUES ('BMW X5', 33000), ('PlayStation 5', 299.99), ('Backpag', 29.99), ('Laptop', 1989.90), ('Keyboard', 59.99), ('Wireless mouse', 42.39); INSERT INTO [Transactions] (CreatedDateTime, ItemId, CustomerId) VALUES (@Today, 1, 1), (DATEADD(dd, 1, @Today), 2, 1), (DATEADD(dd, 1, @Today), 3, 1), (DATEADD(dd, 2, @Today), 2, 2), (DATEADD(dd, 3, @Today), 3, 3), (DATEADD(dd, 6, @Today), 4, 4), (DATEADD(dd, 9, @Today), 5, 5), (DATEADD(dd, 1, @Today), 6, 6); GO -- Для удобства просмотра набора данных, разкомментируйте следующие 2 строки --SELECT * FROM [Customers] --SELECT * FROM [Transactions] SELECT COUNT(Id) CustomersCount FROM [Customers] c WHERE EXISTS( SELECT TOP(1) Id FROM [Transactions] t WHERE t.CustomerId = c.Id AND t.CreatedDateTime BETWEEN c.RegistrationDateTime AND DATEADD(dd, 5, c.RegistrationDateTime)) DROP TABLE [Transactions], [Items], [Customers] GO -- При построении БД руководствовался базовыми принципами нормализации бд -- Пометка: в подзапросе exists можно было бы добавить ORDER BY CreatedDateTime DESC, чтобы обеспечить выполнение условия "совершивших первую покупку", но -- это избыточно, т.к., если совершена вторая или третья покупка и она попадает в диапазон, первая покупка, соответственно, тоже, и она не может быть позднее -- даты регистрации клиента.
run
|
edit
|
history
|
help
0
TESTE PLATAFORMA
Digital Innovation One - SQL Server _2
Common Table Expression
Pro 2
prog1
Microsoft SQL Server T-SQL in 10 mn ~ Lesson 13 Subqueries samples...
Delete cascade
Names
Update using a temp table
Task2