Напиши 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.
— Если запрос выполняется регулярно, создайте материализованное представление с предагрегированными данными.
