📍 В чем разница между сount(*) и count(колонка)?
count(*) считает все строки, в т.ч. с NULLs, а count(колонка) нет.
Как пример, привела скрины dbeawer из базы. Есть колонка first_payed_product_at с пропусками. В варианте count(*) считается все, а в варианте count(first_payed_product_at) только заполненные строки (820 значений).
📍 В чем разница между UNION и UNION ALL?
Основное различие между UNION и UNION ALL заключается в том, что операция UNION удаляет дублированные строки из результирующего набора, а UNION ALL не удаляет дубликаты.
📍 Что такое OVER()? Это предложение (clause) , которое превращает агрегатные функции в оконные.
📍 Перечислите основные команды SQL. Просто перечисляете Select, From, Where, Group by, Having, Order by, если еще и оконки назовете, то вообще класс!
📍 Задачка.
Есть 2 таблицы: с телефонами абонентов (Телефоны) с колонкой |Ctn (номер телефона)|и их договорами (Договоры) с колонками:
|Contract (договор) |Ctn (номер телефона) |Type (тип)
|A87R |9035314517 |1
Необходимо написать скрипт(ы), результатом которого:
- Определятся все ctn, которые не имеют контрактов (через join)
Select t.Ctn
From Телефоны t
Left join Договоры d
on t.Ctn = d.Ctn
Where d.type is null
- Все ctn с типом договора 2
Select t.Ctn
From Телефоны t
Left join Договоры d
on t.Ctn = d.Ctn
Where Type=2
Если Вам задавали какой-то интересный вопрос, то делитесь тут! ✨