Урок по T-SQL: когда выполняется оператор DISTINCT
BeardedDev
0:00 / 0:00
Урок по T-SQL: когда выполняется оператор DISTINCT
837 просмотров · 4 года назад
BeardedDev
11,5 тыс. подписчиков
837 просмотров · 4 года назад
Ещё одно видео от BeardedDev, посвящённое урокам по проектированию данных, бизнес-аналитике, программированию на T-SQL и анализу данных.
В этом видео я рассказываю о том, когда оценивается DISTINCT. Иногда я вижу, как люди пишут запросы с уникальным идентификатором, а затем удивляются, почему результаты содержат дубликаты (помимо уникального идентификатора, конечно). Понимание того, как обрабатываются данные, очень важно для написания точных SQL-запросов.
Я представляю производные таблицы, которые берут результаты запроса, создающего уникальные строки с помощью DISTINCT, а затем добавляют уникальный идентификатор с помощью ROW_NUMBER.
Это видео было создано на SQL Server 2019 с использованием SQL Server Management Studio, но вы можете следовать инструкциям, используя Azure SQL Database или Azure Synapse Analytics, а также другой клиентский инструмент, например Azure Data Studio.
Если вы хотите следовать инструкциям в видео, вы можете использовать приведенные ниже SQL-скрипты:
IF OBJECT_ID(N'dbo.Customer', N'U') IS NOT NULL
DROP TABLE dbo.Customer;
СОЗДАТЬ ТАБЛИЦУ dbo.Customer
(
FirstName VARCHAR(50),
LastName VARCHAR(50)
);
ВСТАВИТЬ В dbo.Customer (FirstName, LastName)
ЗНАЧЕНИЯ
('Sarah', 'Power'),
('Sarah', 'Power'),
('Nathan', 'Jones'),
('Nathan', 'Jones'),
('Nathan', 'Jones'),
('Nathan', 'Jones'),
('Michelle', 'Arnold'),
('Michelle', 'Arnold'),
('Michelle', 'Arnold');
-- уникальные клиенты
ВЫБРАТЬ DISTINCT
FirstName,
LastName
FROM dbo.Customer;
-- уникальные клиенты с уникальным идентификатором
SELECT
ROW_NUMBER() OVER(ORDER BY FirstName, LastName) AS RowNum,
FirstName,
LastName
FROM
(
SELECT DISTINCT
FirstName,
LastName
FROM dbo.Customer
) AS D;