COUNT(*)
Подсчитать строки.
SELECT COUNT(*) AS film_count
FROM film;Практикум 20 соединяет две части курса: SQL на базе sakila и MongoDB на коллекции ich.UK_used_cars.
SQL-блок повторяет подсчёт фильмов, категории, фильмы выбранной категории, актёров с количеством фильмов и языки.
Более сложные SQL-задачи требуют найти самого занятого актёра, актёров с более чем 5 фильмами и ранжировать актёров по числу фильмов.
MongoDB-блок повторяет равенство tax: 145, диапазон tax 100-200, логическое OR для tax 145 или 200.
Текстовый поиск ищет слово max в model без учёта регистра через regex /max/i.
Aggregation Pipeline используется для топ-10 частых налогов, списков производителей/моделей без повторов и поиска самых экономичных гибридов.
Главная цель занятия - не выучить новый оператор, а уверенно выбирать подходящий инструмент под задачу.
Топ-3 ошибки: забыть связующую таблицу film_actor, фильтровать агрегаты в WHERE вместо HAVING, написать regex без флага i.
Подсчитать строки.
SELECT COUNT(*) AS film_count
FROM film;Соединить таблицы sakila по ключам.
SELECT c.name, f.title
FROM film AS f
JOIN film_category AS fc ON fc.film_id = f.film_id
JOIN category AS c ON c.category_id = fc.category_id;Собрать строки по актёру, языку, категории или tax.
SELECT a.actor_id, COUNT(*) AS film_count
FROM actor AS a
JOIN film_actor AS fa ON fa.actor_id = a.actor_id
GROUP BY a.actor_id;Оставить только группы с нужным количеством.
HAVING COUNT(*) > 5Присвоить ранг по агрегированному значению.
RANK() OVER (ORDER BY film_count DESC) AS actor_rankДиапазонный фильтр.
{ tax: { $gte: 100, $lte: 200 } }Логическое ИЛИ.
{ $or: [ { tax: 145 }, { tax: 200 } ] }Группировка в pipeline.
{ $group: { _id: '$tax', count: { $sum: 1 } } }SQL: справочник SQL. MongoDB: справочник MongoDB.