Add check if there is a tie in scrobble count
This commit is contained in:
parent
5739f89e0d
commit
9fa90ff129
2 changed files with 15 additions and 8 deletions
|
|
@ -346,14 +346,17 @@ pub fn loadQuery(entity: EntityType, query_type: QueryTypeEnum) GeneratedQuery {
|
|||
.entity_info => switch (entity) {
|
||||
.scrobble => unreachable,
|
||||
.song =>
|
||||
\\SELECT * FROM
|
||||
\\(SELECT *, TO_CHAR(ROW_NUMBER() OVER (ORDER BY scrobbles DESC),'FM99999th') AS rank FROM
|
||||
\\(SELECT songs.name AS song_name, songs.id AS song_id, COUNT(scrobbles) AS scrobbles
|
||||
\\FROM albumsongs
|
||||
\\INNER JOIN songs ON albumsongs.song_id = songs.id
|
||||
\\INNER JOIN scrobbles ON scrobbles.albumsong = albumsongs.id
|
||||
\\GROUP BY songs.id))
|
||||
\\WHERE song_id = $1
|
||||
\\WITH ranked AS (
|
||||
\\SELECT songs.name AS song_name, COUNT(songs.id) AS scrobbles, RANK() OVER ( ORDER BY COUNT(songs.id) DESC) AS rank, songs.id AS song_id
|
||||
\\FROM scrobbles
|
||||
\\INNER JOIN albumsongs ON albumsongs.id = scrobbles.albumsong
|
||||
\\INNER JOIN songs ON songs.id = albumsongs.song_id
|
||||
\\GROUP BY songs.id)
|
||||
\\SELECT * FROM (SELECT song_name, scrobbles, TO_CHAR(rank,'FM9999th') AS rank, song_id,
|
||||
\\( rank = lag(rank, 1, -1::bigint) OVER (ORDER BY rank)
|
||||
\\OR rank = lead(rank, 1, -1::bigint) OVER (ORDER BY rank)
|
||||
\\)AS is_tie
|
||||
\\FROM ranked) WHERE song_id = $1;
|
||||
,
|
||||
.album =>
|
||||
\\SELECT album_name, t.album_id, artists.name AS artist_name, artists.id AS artist_id, song_num, scrobbles, rank FROM
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue