| 2 | |
| 3 | |
| 4 | * Извештај за вкупниот број на корисници на апликацијата, просечниот рејтинг на корисниците, и просечниот број на размени на книги меѓу корисниците. |
| 5 | |
| 6 | {{{ |
| 7 | create view user_app_stats as |
| 8 | |
| 9 | select |
| 10 | (select count(*) from AppUser) as TotalAppUsers, |
| 11 | coalesce(( |
| 12 | select avg(averageUserRating) |
| 13 | from( |
| 14 | select r.ReceiverId, avg(r.Rating) as averageUserRating |
| 15 | from Review r |
| 16 | group by r.ReceiverId |
| 17 | ) as ratings |
| 18 | ), 0) as AverageUserRating, |
| 19 | coalesce(( |
| 20 | select avg(transaction_count) |
| 21 | from( |
| 22 | select t.BorrowerId, count(*) as transaction_count |
| 23 | from Transaction t |
| 24 | group by t.BorrowerId |
| 25 | ) as transactions |
| 26 | ), 0) as AverageUserTransactions |
| 27 | }}} |
| 28 | |
| 29 | * Извештај за секој член на апликацијата за последните три месеци, бројот на пријатели што ги има тој корисник, бројот на критики што ги примил, бројот на книги што ги има во библиотеката, и бројот на пријави од останатите корисници, подредени од корисникот со најголем број книги до корисникот со најмал број книги. |
| 30 | |
| 31 | {{{ |
| 32 | create view user_stats as |
| 33 | |
| 34 | select u.UserId, u.FirstName, u.LastName, |
| 35 | coalesce(( |
| 36 | select count(*) |
| 37 | from FriendRequest fr |
| 38 | where (fr.SenderId=u.UserId or fr.ReceiverId=u.UserId) |
| 39 | and fr.Status='Accepted' |
| 40 | ), 0) as NumberOfFriends, |
| 41 | coalesce(( |
| 42 | select count(*) |
| 43 | from Review r |
| 44 | where r.GiverId= u.UserId |
| 45 | ), 0) as NumberOfReviews, |
| 46 | coalesce(( |
| 47 | select count(*) |
| 48 | from Library l join LibraryBook lb on l.InventoryId = lb.InventoryId |
| 49 | where l.UserId=u.UserId |
| 50 | ), 0) as NumberOfBooksOwned, |
| 51 | coalesce(( |
| 52 | select count(*) |
| 53 | from Report r |
| 54 | where r.ReportedUserId = u.UserId and r.ReportDate>=CURRENT_DATE-INTERVAL '3 months' |
| 55 | ), 0) as NumberOfReportsReceived |
| 56 | from AppUser u |
| 57 | order by NumberOfBooksOwned desc; |
| 58 | }}} |
| 59 | |
| 60 | * Извештај за најчесто позајмуваните книги по година и тримесечје |
| 61 | |
| 62 | {{{ |
| 63 | select |
| 64 | extract(year from t.BorrowDate) as year, |
| 65 | extract(quarter from t.BorrowDate) as quarter, |
| 66 | b.Title, b.Author, count(*) as NumberOfTimesBorrowed |
| 67 | from Transaction t join TransactionBook tb on t.TransactionId=tb.TransactionId join Book b on tb.BookId = b.BookId |
| 68 | group by |
| 69 | extract(year from t.BorrowDate), |
| 70 | extract(quarter from t.BorrowDate), |
| 71 | b.BookId, b.Title, b.Author |
| 72 | order by year desc, quarter desc, NumberOfTimesBorrowed desc; |
| 73 | }}} |
| 74 | |
| 75 | * Извештај за бројот на испратени, одобрени, одбиени и нерешени барања за книги за секој квартал од минатата година. |
| 76 | |
| 77 | {{{ |
| 78 | select |
| 79 | extract(quarter from RequestDate) as Quarter, |
| 80 | count(case when RequestStatus='Approved' then 1 end) as ApprovedBookRequests, |
| 81 | count(case when RequestStatus='Pending' then 1 end) as PendingBookRequests, |
| 82 | count(case when RequestStatus='Declined' then 1 end) as DeclinedBookRequests |
| 83 | from BookRequest |
| 84 | where extract(year from RequestDate) = extract(year from now()) -1 |
| 85 | group by extract(quarter from RequestDate) |
| 86 | order by Quarter; |
| 87 | }}} |
| 88 | |
| 89 | * Извештај за десетте најмногу додавани книги во листата на желби, по бројот додавања во листата |
| 90 | |
| 91 | {{{ |
| 92 | select b.Title, b.Author, count(*) as TimesAddedToWishlist |
| 93 | from WishlistBook wb join Book b on wb.BookId = b.BookId |
| 94 | group by b.BookId, b.Title, b.Author |
| 95 | order by TimesAddedToWishlist desc |
| 96 | limit 10; |
| 97 | }}} |