Работа с повторяющимися значениями в SQL может оказаться трудоемкой задачей. Но не бойтесь, это руководство призвано облегчить ваше бремя.
Данные бывают разных видов и форм, но повторяющиеся записи являются важной частью каждого формата данных. Независимо от того, имеете ли вы дело с веб-данными или просто просматриваете кучу данных о продажах, ваш анализ будет искажен, если у вас будут повторяющиеся значения.
Используете ли вы SQL для обработки чисел и выполнения длинных запросов к стекам данных? Если да, то это руководство по управлению дубликатами SQL доставит вам истинное наслаждение.
Вот несколько различных способов управления дубликатами с помощью SQL.
1. Подсчет дубликатов с помощью группировки по функциям
SQL — это многогранный язык программирования, предлагающий различные функции для упрощения вычислений. Если у вас большой опыт работы с функциями агрегирования в SQL, возможно, вы уже знакомы с группировать по функциям и для чего их можно использовать.
группа по функция является одним из
самые основные команды SQL, что идеально подходит для работы с несколькими записями, поскольку вы можете использовать различные агрегатные функции, такие как сумма, считать, среднийи многие другие в сочетании с группа по функция для получения отдельного значения по строкам.В зависимости от сценария вы можете найти дубликаты с помощью группа по функция в одном столбце и нескольких столбцах.
а. Подсчет дубликатов в одном столбце
Предположим, у вас есть следующая таблица данных с двумя столбцами: Идантификационный номер продукта и Заказы.
Идантификационный номер продукта |
Заказы |
2 |
7 |
2 |
8 |
2 |
10 |
9 |
6 |
10 |
1 |
10 |
5 |
12 |
5 |
12 |
12 |
12 |
7 |
14 |
1 |
14 |
1 |
47 |
4 |
47 |
4 |
Чтобы найти повторяющиеся идентификаторы продуктов, вы можете использовать группа по функции и имея предложение для фильтрации агрегированных значений следующим образом:
выбирать Код товара, считать(Код товара) как Общее количество
от sahil.product_dups
группировать по productid
количество (productid) > 1
упорядочить по productid;
Как и в случае типичного оператора SQL, вы должны начать с определения столбцов, которые вы хотите отобразить в конечном результате. В этом случае мы хотим отобразить количество повторяющихся значений в Идантификационный номер продукта столбец.
В первом сегменте определите Идантификационный номер продукта колонка внутри выбирать заявление. считать функция следует за Идантификационный номер продукта ссылку, чтобы SQL понял цель вашего запроса.
Затем определите исходную таблицу, используя от пункт. С считать является функцией агрегирования, вам нужно использовать группа по функция для группировки всех похожих значений.
Помните, идея состоит в том, чтобы перечислить повторяющиеся значения в Идантификационный номер продукта столбец. Для этого необходимо отфильтровать количество и отобразить значения, встречающиеся в столбце более одного раза. имея предложение фильтрует агрегированные данные; можно использовать условие, т.е. количество (идентификатор продукта)> 1, для отображения желаемых результатов.
Наконец, Сортировать по Предложение сортирует окончательные результаты в порядке возрастания.
Результат выглядит следующим образом:
б. Подсчет дубликатов в нескольких столбцах
Если вы хотите подсчитать дубликаты в нескольких столбцах, но не хотите писать несколько SQL-запросов, вы можете расширить приведенный выше код несколькими изменениями. Например, если вы хотите отобразить повторяющиеся строки в нескольких столбцах, вы можете использовать следующий код:
выбирать код продукта, считать(*) как Общее количество
от sahil.product_dups
группировка по productid, заказы
количество (productid) > 1
упорядочить по productid;
В выводе вы заметите, что отображаются только две строки. Когда вы настраиваете запрос и добавляете ссылку на оба столбца в выбирать оператор, вы получите количество совпадающих строк с повторяющимися значениями.
Вместо счет (столбец) функция, вы должны передать считать(*) функция для получения повторяющихся строк. * функция переключается между всеми строками и ищет повторяющиеся строки вместо отдельных повторяющихся значений.
Результат показан ниже:
Соответствующие строки с идентификатором продукта 14 и 47 отображаются, поскольку значения заказа совпадают.
2. Пометка дубликатов с помощью функции row_number()
В то время группа по и имея комбинация — это самый простой способ найти и пометить дубликаты в таблице, существует альтернативный способ поиска дубликатов с помощью номер_строки() функция. номер_строки() функция является частью Оконные функции SQL категории и имеет важное значение для эффективной обработки ваших запросов.
Вот как вы можете пометить дубликаты с помощью номер_строки() функция:
выбирать код продукта,
row_number() over (раздел по идентификатору продукта в порядке по идентификатору продукта) как sno
от sahil.product_dups;
номер_строки() Функция прочесывает каждое значение идентификатора продукта и усваивает количество повторений для каждого идентификатора. раздел ключевое слово разделяет повторяющиеся значения и присваивает значения в хронологическом порядке, например 1, 2, 3 и т. д.
Если вы не используете раздел ключевое слово, у вас будет уникальный серийный номер для всех идентификаторов продукта, который не будет соответствовать вашей цели.
Сортировать по предложение в разделе раздела функционально при определении порядка сортировки. Вы можете выбрать восходящий (по умолчанию) и убывающий порядок.
Наконец, вы можете присвоить столбцу псевдоним, чтобы упростить фильтрацию в дальнейшем (при необходимости).
3. Удаление повторяющихся строк из таблицы SQL
Поскольку дублирующиеся значения в таблице могут исказить ваш анализ, их удаление на этапе очистки данных часто является обязательным. SQL — ценный язык, предлагающий способы эффективного отслеживания и удаления повторяющихся значений.
а. Использование отдельного ключевого слова
отчетливый ключевое слово, вероятно, является наиболее распространенной и часто используемой функцией SQL для удаления повторяющихся значений в таблице. Вы можете удалить дубликаты из одного столбца или даже дублировать строки за один раз.
Вот как вы можете удалить дубликаты из одного столбца:
выбиратьотчетливый Код товара от sahil.product_dups;
Выходные данные возвращают список всех уникальных идентификаторов продуктов из таблицы.
Чтобы удалить повторяющиеся строки, вы можете настроить приведенный выше код следующим образом:
выбиратьотчетливый * от sahil.product_dups;
Вывод возвращает список всех уникальных строк из таблицы. Глядя на вывод, вы заметите, что идентификаторы продуктов 14 и 47 появляются только один раз в итоговой таблице результатов.
б. Использование метода Common Table Expression (CTE)
Метод Common Table Expression (CTE) немного отличается от основного кода SQL. CTE похожи на временные таблицы SQL, с той лишь разницей, что они виртуальные, на которые можно ссылаться только во время выполнения запроса.
Самым большим преимуществом является то, что вам не нужно передавать отдельный запрос, чтобы удалить эти таблицы позже, так как они перестают существовать, как только запрос выполняется. Используя метод CTE, вы можете использовать приведенный ниже код для поиска и удаления дубликатов.
с cteproducts как
(выбирать код продукта,
row_number() over (раздел по идентификатору продукта в порядке по идентификатору продукта) как sno
от sahil.product_dups)
выбирать * от cteproducts
где сно = 1;
Вы можете вызвать функцию CTE, используя с ключевое слово; определить имя временной виртуальной таблицы после с ключевое слово. Ссылка на таблицу CTE полезна при фильтрации значений таблицы.
В следующей части назначьте номера строк своим идентификаторам продуктов, используя номер_строки() функция. Поскольку вы ссылаетесь на каждый идентификатор продукта с помощью раздел функция, каждый повторяющийся идентификатор имеет отдельное значение.
Наконец, отфильтруйте только что созданный сно столбец в последнем сегменте с другим выбирать заявление. Установите для этого фильтра значение 1, чтобы получить уникальные значения в конечном выводе.
Научитесь использовать SQL простым способом
SQL и его варианты стали притчей во языцех, с их врожденной способностью запрашивать и использовать реляционные базы данных. От написания простых запросов до выполнения сложного анализа с подзапросами — в этом языке есть все понемногу.
Однако, прежде чем писать какие-либо запросы, вы должны отточить свои навыки и научиться работать с кодами, чтобы стать искусным программистом. Вы можете изучать SQL в увлекательной игровой форме, применяя свои знания в играх. Изучите некоторые причудливые нюансы кодирования, добавив немного забавы в свой код.