2 | | == Најслушана песна од еден корисник во минатата година |
3 | | {{{#!sql |
4 | | select s.song_id,s.song_title, count(creation_id) as play_count |
5 | | from(select |
6 | | from listens_to l join song s on l.creation_id=s.song_id |
7 | | where l.user_id=current_user_id) |
8 | | where extract(year from listens_timestamp)=extract(year from current_date) |
9 | | group by s.song_id,s.song_title |
10 | | order by play_count desc |
11 | | limit 1; |
12 | | }}} |
13 | | == Жанр на песна кој ''слушателот'' го слушал најмногу минатата година |
14 | | {{{#!sql |
15 | | select res.genre_name,count(res.genre_name) as genre_count |
16 | | from ((select * |
17 | | from (select * |
18 | | from listens_to lt join song s on lt.creation_id =s.song_id) as songs join is_of_genre iog on songs.song_id=iog.creation_id |
19 | | ) as is_genre join genre g on is_genre.genre_id=g.genre_id) as res |
20 | | group by res.genre_name |
21 | | order by genre_count desc |
22 | | limit 1; |
23 | | }}} |
24 | | == Листа на локации каде еден ''уметник'' имал концерт минатата година |
25 | | {{{#!sql |
26 | | -- Ова е само пример доколку бараниот уметник има id 4 |
27 | | select * |
28 | | from creates_event ce join (select b.event_id as event_id,event_name,concert_location,concert_timedate |
29 | | from buzzevent b join concert c on b.event_id=c.event_id) as q1 on ce.event_id=q1.event_id |
30 | | where artist_id = 4 and (concert_timedate >= date_trunc('year',current_date - interval '1' year) |
31 | | and concert_timedate<date_trunc('year',current_date)); |
32 | | }}} |
33 | | == Најслушани песни во последните 3 месеци |
34 | | {{{#!sql |
35 | | select song_id,song_title,count(*) as listen_count |
36 | | from (select * |
37 | | from song s join creation c on s.song_id=c.creation_id) as songs |
38 | | join listens_to as lt on songs.song_id=lt.creation_id |
39 | | where listens_timestamp>=current_date-interval '3 months' |
40 | | group by song_id,song_title |
41 | | order by listen_count desc; |
42 | | }}} |
43 | | == Најпопуларна категорија последниот месец |
44 | | {{{#!sql |
45 | | select category_name |
46 | | from (select res1.episode_id,res1.episode_title,res1.podcast_id,res1.listen_count,category_id |
47 | | from (select episode_id,episode_title,podcast_id, count(*) as listen_count |
48 | | from (select * |
49 | | from episode e join creation c on e.episode_id=c.creation_id) as ep join listens_to as lt on ep.episode_id=lt.creation_id |
50 | | where lt.listens_timestamp > current_date-interval'1 month' |
51 | | group by episode_id,episode_title,podcast_id |
52 | | order by listen_count desc |
53 | | limit 1 |
54 | | ) as res1 join podcast p on res1.podcast_id=p.podcast_id) as res2 join category cat on res2.category_id=cat.category_id; |
55 | | }}} |
56 | | == Најслушан ''уметник'' во една земја минатата година |
57 | | {{{#!sql |
58 | | select b2.user_id,b2.user_name,count(b2.user_name) as listened_artist |
59 | | from buzzer b1 right join listener l on b1.user_id=l.user_id |
60 | | join listens_to lt on lt.user_id=l.user_id |
61 | | join song s on lt.creation_id=s.song_id |
62 | | join creation c on s.song_id=c.creation_id |
63 | | join buzzer b2 on c.created_by=b2.user_id |
64 | | where b1.user_country='MK' and (lt.listens_timestamp >=date_trunc('year',current_date-interval '1' year) and lt.listens_timestamp<date_trunc('year',current_date)) |
65 | | group by b2.user_id,b2.user_name |
66 | | order by listened_artist desc |
67 | | limit 1; |
68 | | }}} |
69 | | == 10 најдодавани песни во различни плејлисти |
70 | | {{{#!sql |
71 | | select s.song_id,s.song_title,count(*) as song_count |
72 | | from playlist p join in_playlist ip on p.playlist_id=ip.playlist_id |
73 | | join song s on ip.creation_id=s.song_id |
74 | | group by s.song_id,s.song_title |
75 | | order by song_count desc |
76 | | limit 10; |
77 | | }}} |
| 45 | WITH CreationListenerOrigin AS ( |
| 46 | SELECT |
| 47 | C.creation_id, |
| 48 | L.listener_id, |
| 49 | MAX(L.listener_origin) AS majority_origin |
| 50 | FROM |
| 51 | ( |
| 52 | SELECT song_id AS creation_id FROM SONG |
| 53 | UNION |
| 54 | SELECT album_id AS creation_id FROM ALBUM |
| 55 | UNION |
| 56 | SELECT podcast_id AS creation_id FROM PODCAST |
| 57 | ) C |
| 58 | JOIN |
| 59 | LISTENS_TO L ON C.creation_id = L.creation_id |
| 60 | GROUP BY |
| 61 | C.creation_id, L.listener_id |
| 62 | ) |
| 63 | |
| 64 | SELECT |
| 65 | CLO.creation_id, |
| 66 | CLO.majority_origin, |
| 67 | CASE |
| 68 | WHEN S.song_id IS NOT NULL THEN 'SONG' |
| 69 | WHEN A.album_id IS NOT NULL THEN 'ALBUM' |
| 70 | WHEN P.podcast_id IS NOT NULL THEN 'PODCAST' |
| 71 | END AS creation_type |
| 72 | FROM |
| 73 | CreationListenerOrigin CLO |
| 74 | LEFT JOIN |
| 75 | SONG S ON CLO.creation_id = S.song_id |
| 76 | LEFT JOIN |
| 77 | ALBUM A ON CLO.creation_id = A.album_id |
| 78 | LEFT JOIN |
| 79 | PODCAST P ON CLO.creation_id = P.podcast_id |
| 80 | ORDER BY |
| 81 | CLO.creation_id; |
| 102 | == Прикажи ги сите песни кои имаат просечен рејтинг поголем од 4.5 и се класификуваат како 'поп' или 'рок', а имаат најмалку 100000 преслушувања. |
| 103 | {{{#!sql |
| 104 | SELECT song_name, AVG(rating) AS average_rating, COUNT(streams) AS number_of_streams |
| 105 | FROM songs |
| 106 | JOIN ratings ON songs.song_id = ratings.song_id |
| 107 | JOIN classifications ON songs.song_id = classifications.song_id |
| 108 | WHERE classifications.genre IN ('pop', 'rock') |
| 109 | GROUP BY song_name |
| 110 | HAVING average_rating > 4.5 AND number_of_streams > 100000; |
| 111 | }}} |
| 112 | == Подкасти кои имаат најмалку 50 епизоди и се класификуваат како образовни |
| 113 | {{{#!sql |
| 114 | SELECT p.podcast_title, COUNT(e.episode_id) AS total_episodes |
| 115 | FROM PODCAST p |
| 116 | JOIN EPISODE e ON p.podcast_id = e.podcast_id |
| 117 | JOIN CATEGORY c ON p.category_id = c.category_id |
| 118 | WHERE c.category_name = 'Education' |
| 119 | GROUP BY p.podcast_id, p.podcast_title |
| 120 | HAVING COUNT(e.episode_id) > 50; |
| 121 | }}} |
| 122 | == Концерти кои ќе се одржат во Лондон и ќе вклучуваат информации за изведувачите, времетраењето на настанот и бројот на преслушувања на нивните песни: |
| 123 | {{{#!sql |
| 124 | SELECT |
| 125 | c.concert_name, |
| 126 | c.concert_location, |
| 127 | c.concert_timeDate, |
| 128 | COUNT(l.song_id) AS total_listens, |
| 129 | a.information AS artist_information |
| 130 | FROM CONCERT c |
| 131 | JOIN BUZZEVENT b ON c.event_id = b.event_id |
| 132 | JOIN ARTIST a ON b.user_id = a.user_id |
| 133 | JOIN SONG s ON a.user_id = s.created_by |
| 134 | JOIN LISTENS l ON s.song_id = l.song_id |
| 135 | WHERE c.concert_location = 'London' |
| 136 | GROUP BY c.concert_name, c.concert_location, c.concert_timeDate, a.information |
| 137 | ORDER BY c.concert_timeDate; |
| 138 | }}} |
| 139 | == Да се прикажат информациите за изведувачите, вклучувајќи ги нивните имиња, бројот на песни кои ги креирале и просечниот рејтинг на нивните песни: |
| 140 | {{{#!sql |
| 141 | SELECT |
| 142 | a.user_id, |
| 143 | a.information AS artist_name, |
| 144 | COUNT(s.song_id) AS total_songs, |
| 145 | AVG(r.rating) AS average_rating |
| 146 | FROM ARTIST a |
| 147 | LEFT JOIN SONG s ON a.user_id = s.created_by |
| 148 | LEFT JOIN RATINGS r ON s.song_id = r.song_id |
| 149 | GROUP BY a.user_id, a.information |
| 150 | ORDER BY average_rating DESC; |
| 151 | }}} |
| 152 | == Да се излистаат најдодаваните песни според регионот на корисниците,и да ги редоследува првите 10 најдодавани песни за секој регион. Песните според бројот на плејлисти во кои се наоѓаат, во опаѓачки редослед. |
| 153 | {{{#!sql |
| 154 | SELECT s.song_title, COUNT(*) AS total_playlists, u.user_region |
| 155 | FROM SONG s |
| 156 | JOIN PLAYLIST_SONG ps ON s.song_id = ps.song_id |
| 157 | JOIN PLAYLIST p ON ps.playlist_id = p.playlist_id |
| 158 | JOIN LISTENER l ON p.created_by = l.user_id |
| 159 | JOIN USER u ON l.user_id = u.user_id |
| 160 | GROUP BY s.song_id, s.song_title, u.user_region |
| 161 | ORDER BY u.user_region, total_playlists DESC |
| 162 | LIMIT 10; |
| 163 | }}} |