== Напредни извештаи од базата (SQL) === Извештај за секоја нарачка на посетител во последниот месец и начинот на кој е извршена * Се спојуваат табелите recepti и so_koi. * Потоа се филтрираат по датумот на нарачката, чиј што датум треба да биде не постар од еден месец. * Потоа атрибутите се групираат по telefon- id за посетителот, rec_id - id за рецептот нарачан, nacin - начин на достава, rec_ime - името за рецептот. * На крај резултато се сортира по telefon, total_recipie_orders( колона која пресметува вкупен број на рецепти) и rec_id. {{{ select telefon , count(sk.rec_id) total_recipie_orders, sk.rec_id ,r.rec_ime, sk.nacin from so_koi sk left join recepti r on r.rec_id = sk .rec_id where vreme > current_date - interval '1 month' group by telefon, sk.rec_id, nacin, r.rec_ime order by telefon, total_recipie_orders desc, sk.rec_id desc; }}} === Извештај за сите рецепти за кои има коментар и нарачка од посетителот кој го нарачал јадењето. Коментарот не смее да биде постар од 3 месеци. * Се спојуваат табелите komentari и recepti. * Резултатот се групира по komentar - rec_id (id за рецептот за кој се напишал коментар) и recepti - rec_ime (името на рецептот). * Во where делот се филтрира така што komentar - rec_id и komentar - telefont (telefonot на посетителот кој го напишал коментарот) се наоѓаат во табелата so_koi (се чуваат сите јадења кои биле нарачани) и komentar - kom_data (датата кога коментарот бил напишан) да не биде постара од 3 месеци. * Се сортира по sredna_ocena (Средна вредност на оцените) и komentar - rec_id {{{ select k.rec_id , r.rec_ime , avg(ocena) sredna_ocena, max(ocena) najvisoka_ocena , min(ocena) najniska_ocena, min(kom_data) data_na_posleden_komentar from komentari k left join recepti r on r.rec_id = k.rec_id where (k.telefon, k.rec_id) in (select telefon, rec_id from so_koi sk) and k.kom_data > current_date - interval '3 months' group by k.rec_id, r.rec_ime order by sredna_ocena desc, k.rec_id; }}}