Неочевидный SQL - count()
Даже если не ищу работу - с удовольствием хожу на собеседования (к слову - рекомендую всем делать это регулярно). И на последнем меня красиво посадили в лужу. Нашёл просто грубейший пробел в своих знаниях - как работает count(), и как ни странно - на качестве моих SQL-запросов это никак не отражалось все эти годы :)
Предположим, что у нас есть такая таблица
| id | c1 |
|---|---|
| 1 | null |
| 2 | null |
| 3 | null |
| null | id |
| null | null |
Какие значения для неё вернут count(*), count(1), count(2), count(id), count(‘id’), count(null)?
with t as (
select 1 as id, null as c1
union all select 2 , null
union all select 3 , null
union all select null , 'id'
union all select null , null
)
select count(*), count(1), count(2), count(id), count('id'), count(null)
from t;
Правильный ответ, логику рассуждений, и почему мне это было не важно - напишу после выходных.
Если прямо невтерпёж проверить - специально написал через CTE, копируете и выполняете (например здесь - https://sqliteonline.com/)
Written on November 22, 2024