Advertisement
Denjamin

ЗАДАНИЕ 3

May 1st, 2024
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ---------------------------------------------
  2. --- ЗАДАНИЕ 3
  3. --- Количество исполнителей в каждом жанре:
  4.        
  5. SELECT g.name AS genre, COUNT(ag.artistid) AS artist_count
  6. FROM genres g
  7. LEFT JOIN artistgenres ag ON g.id = ag.genreid
  8. LEFT JOIN artists a ON ag.artistid = a.id
  9. GROUP BY g.name;
  10.  
  11. --- Количество треков, вошедших в альбомы 2019–2020 годов:
  12. SELECT COUNT(t.id) AS track_count
  13. FROM tracks t
  14. INNER JOIN albums a ON t.albumid = a.id
  15. WHERE a.releaseyear BETWEEN 2019 AND 2020;
  16.  
  17. --- Средняя продолжительность треков по каждому альбому (бахнем алиас)
  18. SELECT a.name AS album_name, AVG(t.duration) AS avg_duration
  19. FROM albums a
  20. INNER JOIN tracks t ON a.id = t.albumid
  21. GROUP BY a.name;
  22.  
  23. --- Все исполнители, которые не выпустили альбомы конкретно в 2020 году
  24. --- (но выпустили в других но нас 2020 интересует, логика исключающая другие годы):
  25. SELECT DISTINCT ar.name AS artist_name  
  26. FROM artists ar  
  27. LEFT JOIN albumartists aa ON ar.id = aa.artistid  
  28. LEFT JOIN albums al ON aa.albumid = al.id  
  29. WHERE al.releaseyear <> 2020 OR al.releaseyear IS NULL;  --- 2020 конкретно выводим всех кто не выпустил
  30.  
  31. --- Названия сборников, в которых присутствует конкретный исполнитель (предположим artist_id равен 3):
  32. SELECT c.name AS collection_name
  33. FROM collections c
  34. INNER JOIN collectiontracks ct ON c.id = ct.collectionid
  35. WHERE ct.trackid IN (
  36.     SELECT t.id
  37.     FROM tracks t
  38.     INNER JOIN albums a ON t.albumid = a.id
  39.     INNER JOIN albumartists aa ON a.id = aa.albumid
  40.     WHERE aa.artistid = 3 -- значение ID можно менять
  41. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement