Прошу помогите с sql запросом для базы данных chinook.db
Суть запроса: Для каждого альбома определить все жанры песен, которые в нём есть и количество песен по каждому жанру (формат вывода: альбом, жанр, количество). Выводить только те альбомы, где жанров больше одного.
Ссылка на сайт с бд: https://www.sqlitetutorial.net/sqlite-sample-database/
Я пробовал сделать разные sql запросы по типу:
SELECT
a.Title AS AlbumTitle,
g.Name AS Genre,
COUNT(t.TrackId) AS NumberOfTracks
FROM (
SELECT *
FROM albums
WHERE albumid IN (
SELECT albumid
FROM tracks
GROUP BY albumid
HAVING COUNT(DISTINCT genreid) > 1
)
) a
JOIN tracks t ON a.albumid = t.albumid
JOIN genres g ON t.genreid = g.genreid;
или
SELECT
a.Title AS AlbumTitle,
g.Name AS Genre,
COUNT(t.TrackId) AS NumberOfTracks
FROM
Albums a
JOIN
Tracks t ON a.AlbumId = t.AlbumId
JOIN
Genres g ON t.GenreId = g.GenreId
GROUP BY
AlbumTitle, Genre
HAVING COUNT(t.TrackId) > 1
ORDER BY
Genre;
но ни один из этих запросов не выводит того, что требуется. Я не могу понять что не так ведь я задаю условие для количества жанров больше одного.
Необходимый результат это вывод таблицы с альбомами где жанров больше одного.
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Должно получиться вот таким запросом:
select a.title, g.name, count(*)
from albums a
join tracs t on a.albumid = t.albumid
join genres g on t.genreid = g.genreid
group by a.title, g.name
having count(*) > 1
Не имея доступа к данным в БД, сделал аналог в песочнице
