SHOW:
|
|
- or go back to the newest paste.
| 1 | SELECT | |
| 2 | g.id AS genre_id, | |
| 3 | g.name AS genre_name, | |
| 4 | - | t2.books_in_genre, |
| 4 | + | t2.books_in_genre AS books_in_genre, |
| 5 | b.id AS book_id, | |
| 6 | b.name AS book_name, | |
| 7 | b.date_added | |
| 8 | - | FROM book b |
| 8 | + | FROM genre g |
| 9 | - | RIGHT JOIN book_genre bg ON b.id = bg.book_id |
| 9 | + | OUTER JOIN ( |
| 10 | - | RIGHT JOIN genre g ON g.id = bg.genre_id |
| 10 | + | SELECT bg.genre_id AS genre_id, |
| 11 | - | JOIN ( |
| 11 | + | COUNT(b.id) as books_in_genre, |
| 12 | - | SELECT g.id genre_id, COUNT(b.id) books_in_genre, MAX(b.date_added) newest_book |
| 12 | + | FIRST_VALUE(b.id) OVER (PARTITION BY bg.genre_id ORDER BY b.date_added DESC, b.id DESC) AS newest_book_id |
| 13 | FROM book b | |
| 14 | - | RIGHT JOIN book_genre bg ON b.id = bg.book_id |
| 14 | + | LEFT JOIN book_genre bg ON b.id = bg.book_id |
| 15 | - | RIGHT JOIN genre g ON g.id = bg.genre_id |
| 15 | + | GROUP BY bg.genre_id |
| 16 | - | GROUP BY g.id |
| 16 | + | |
| 17 | ON g.id = t2.genre_id | |
| 18 | LEFT JOIN books b | |
| 19 | - | AND (b.date_added = t2.newest_book OR b.date_added IS NULL AND t2.newest_book IS NULL) |
| 19 | + | ON b.id = t2.newest_book_id |
| 20 | - | ORDER BY t2.books_in_genre DESC |
| 20 | + | ORDER BY books_in_genre DESC |