Перейти к содержанию

SQL

Порядок операторов

Порядок операторов SQL-запроса
SELECT -- перечисление полей для результирующей таблицы
    uid,
    COUNT(*) AS NumRows
FROM -- источник данных
    default.checks
WHERE -- фильтрация данных
    uid != '12345'
GROUP BY -- группировка данных
    uid
HAVING -- фильтрация данных, аналогично WHERE, при использовании GROUP BY
    NumRows > 10 -- ссылаемся на алиас NumRows
    AND SUM(clicks) > 100 -- добавляем еще одно условие, при этом не добавляем в SELECT
ORDER BY -- сортировка результирующей таблицы
    rows DESC
LIMIT 100 -- ограничение на кол-во строк результирующей таблицы

Агрегатные функции

Агрегатные функции используются в блоке SELECT и в качестве параметра принимают наименования поля. К ним относятся:

  1. COUNT() — количество значений поля; без параметра считает количество строк, с полем – количество без NULL значений.
  2. COUNT (DISTINCT) – количество уникальных значений поля; uniqExact() и count(DISTINCT) – одно и тоже.
  3. AVG() – вычисляет среднее.
  4. MIN() – вычисляет минимальное значение.
  5. MAX() – вычисляет максимальное значение.
  6. SUM() – вычисляет сумму элементов.

ClickHouse: Перечень агрегатных функций.

Объединения таблиц

Ссылки на материалы:

  1. Wikipedia: Join (SQL).
  2. PostgreSQL Joins.
  3. ClickHouse: Секция JOIN.
Синтаксис ClickHouse
SELECT <expr_list>
FROM <left_table>
[GLOBAL] [INNER|LEFT|RIGHT|FULL|CROSS] [OUTER|SEMI|ANTI|ANY|ASOF] JOIN <right_table>
(ON <expr_list>)|(USING <column_list>) ...

INNER JOIN

INNER JOIN — возвращаются только совпадающие строки. Без указания типа JOIN используется INNER.

Пример запроса
SELECT
    A.id as id,
    A.city as city,
    B.country as country
FROM
    table_A as A
JOIN
    table_B as B
ON
    A.id = B.id