Напиши SQL-запрос для вычисления количества уникальных доменов в таблице search_analytics.

## SQL-запрос для подсчёта уникальных доменов в таблице search_analytics

Чтобы вычислить количество уникальных доменов в таблице `search_analytics`, используется агрегатная функция `COUNT` в сочетании с ключевым словом `DISTINCT`.

### Базовый запрос

Если в таблице есть отдельный столбец `domain`, запрос выглядит так:

sql
SELECT COUNT(DISTINCT domain) AS unique_domain_count
FROM search_analytics;

Этот запрос возвращает одно число — количество уникальных значений в столбце `domain`.

### Если домен нужно извлечь из URL

Если в таблице хранится полный URL (например, в столбце `url`), домен можно извлечь с помощью строковых функций. Пример для PostgreSQL:

sql
SELECT COUNT(DISTINCT
REGEXP_REPLACE(
REGEXP_REPLACE(url, ‘^https?://’, »),
‘/.*$’, »
)
) AS unique_domain_count
FROM search_analytics;

Для MySQL аналогичный подход:

sql
SELECT COUNT(DISTINCT
SUBSTRING_INDEX(
SUBSTRING_INDEX(REPLACE(REPLACE(url, ‘https://’, »), ‘http://’, »), ‘/’, 1),
‘?’, 1
)
) AS unique_domain_count
FROM search_analytics;

### Расширенный вариант с группировкой

Если нужно не только посчитать уникальные домены, но и увидеть, сколько раз каждый встречается:

sql
SELECT domain, COUNT(*) AS occurrences
FROM search_analytics
GROUP BY domain
ORDER BY occurrences DESC;

### Фильтрация NULL-значений

Если в столбце `domain` могут быть пустые значения, стоит добавить фильтр:

sql
SELECT COUNT(DISTINCT domain) AS unique_domain_count
FROM search_analytics
WHERE domain IS NOT NULL AND domain »;

### Строка для CSV

Ниже — готовая строка для вставки в CSV-файл (заголовок + пример результата):

table_name,column_name,query_type,result_column,sql_query
search_analytics,domain,COUNT DISTINCT,unique_domain_count,»SELECT COUNT(DISTINCT domain) AS unique_domain_count FROM search_analytics;»

### Советы по оптимизации

— Убедитесь, что на столбце `domain` есть индекс — это ускорит выполнение `COUNT(DISTINCT …)`.
— В больших таблицах (миллионы строк) рассмотрите использование приближённых алгоритмов, например `HLL` (HyperLogLog) в PostgreSQL или ClickHouse.
— Если запрос выполняется регулярно, создайте материализованное представление с предагрегированными данными.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.