cast
- зарезервированное слово в SQLite. Это делает его действительно плохим выбором для имени таблицы или столбца. Список зарезервированных слов содержится в документации .
Если вы не можете изменить имя таблицы, используйте явные псевдонимы:
SELECT c.cast_id, c.cast_name, AVG(m.score)
FROM movies m INNER JOIN
"cast" c
ON c.movie_id = m.id
WHERE m.score >= 40
GROUP BY c.cast_id, c.cast_name
HAVING COUNT(m.id) >= 2
ORDER BY AVG(m.score) DESC, c.cast_name DESC;
Примечания:
- Имя таблицы окружено escape-символами (обратные метки и квадратные скобки также работают).
- В
GROUP BY
есть все неагрегированные столбцы в SELECT
.
- Псевдонимы - это сокращения имен таблиц.