| | 1 | == Za sekoj restoran da se najdat menu items koi se najcesto prodavani, vkupna kolicina na prodadeni menu items i vkupna zarabotka i cena na item-ot |
| | 2 | |
| | 3 | {{{#!div style="font-size: 100%" |
| | 4 | {{{#!sql |
| | 5 | WITH kolicina_na_mrodadeni_menu_items_po_restoran AS ( |
| | 6 | SELECT n.restoran_id, nsm.menuitem_id, COUNT(DISTINCT n.id) AS br_prodadeni_menuitems_po_restoran |
| | 7 | FROM naracka n |
| | 8 | JOIN naracka_sodrzi_menu_item nsm ON n.id=nsm.naracka_id |
| | 9 | JOIN naplata na ON na.naracka_id=n.id |
| | 10 | GROUP BY n.restoran_id, nsm.menuitem_id |
| | 11 | ), presmetka_najprodavan_menu_item_po_restoran AS( |
| | 12 | SELECT restoran_id, menuitem_id, br_prodadeni_menuitems_po_restoran, ROW_NUMBER() OVER(PARTITON BY restoran_id, menuitem_id ORDER BY br_prodadeni_menuitems_po_restoran DESC) RN |
| | 13 | FROM kolicina_na_mrodadeni_menu_items_po_restoran |
| | 14 | ) |
| | 15 | SELECT r.ime AS ime_na_restoran, mi.ime AS najprodavan_menu_item, br_prodadeni_menuitems_po_restoran AS prodadena_kolicina, mi.cena AS cena_na_menu_item, (br_prodadeni_menuitems_po_restoran*mi.cena) AS vkupna_zarabotka_od_najprodavan_menu_item |
| | 16 | FROM presmetka_najprodavan_menu_item_po_restoran nmipr |
| | 17 | JOIN restoran r ON nmipr.restoran_id=r.id |
| | 18 | JOIN menu_item mi ON nmipr.menuitem_id=mi.id |
| | 19 | WHERE RN=1; |
| | 20 | }}} |
| | 21 | }}} |
| | 22 | |
| | 23 | == Za sekoj restoran da se najde potrosuvacot(potrosuvacite) koj napravil najmnogu naracki za tekovnata godina, kolku naracki napravil vo restoranot i da se izlista adresa i telefonski broj na potrosuvacot |
| | 24 | |
| | 25 | {{{#!div style="font-size: 100%" |
| | 26 | {{{#!sql |
| | 27 | WITH broj_na_naracki_potrosuvac_restoran_tekovna_godina AS( |
| | 28 | SELECT n.potrosuvac_id, n.restoran_id, COUNT(DISTINCT n.id) AS broj_na_naracki |
| | 29 | FROM naracka n |
| | 30 | WHERE extract(year from n.datum)=extract(year from now()) |
| | 31 | GROUP BY n.potrosuvac_id, n.restoran_id |
| | 32 | ), presmetka_najveren_potrosuvac_po_restoran_za_tekovna_godina AS( |
| | 33 | SELECT n.restoran_id, max(broj_na_naracki) as max_broj_naracki |
| | 34 | FROM broj_na_naracki_potrosuvac_restoran_tekovna_godina |
| | 35 | ) |
| | 36 | SELECT p.address AS adresa_na_najveren_potrosuvac, p.br_telefon AS br_telefon_na_najveren_potrosuvac, a.broj_na_naracki, r.ime AS ime_na_restoran |
| | 37 | FROM broj_na_naracki_potrosuvac_restoran_tekovna_godina a |
| | 38 | JOIN presmetka_najveren_potrosuvac_po_restoran_za_tekovna_godina b ON a.restoran_id=b.restoran_id AND a.broj_na_naracki=b.max_broj_naracki |
| | 39 | JOIN potrosuvac p ON p.korisnik_id=a.potrosuvac_id |
| | 40 | JOIN restoran r ON a.restoran_id=r.id; |
| | 41 | }}} |
| | 42 | }}} |
| | 43 | |
| | 44 | |
| | 45 | |
| | 46 | == Restoran so najmnogu naracki vo poslednite tri meseci |
| | 47 | |
| | 48 | {{{#!div style="font-size: 100%" |
| | 49 | {{{#!sql |
| | 50 | CREATE VIEW restoran_broj_naracki AS |
| | 51 | SELECT n.restoran_id, COUNT(DISTINCT n.id) AS broj_na_naracki |
| | 52 | FROM naracka n |
| | 53 | WHERE n.datum between (now()-interval '3 months') and now() |
| | 54 | GROUP BY n.restoran_id; |
| | 55 | |
| | 56 | SELECT r.ime AS ime_na_restoran, rbn.broj_na_naracki |
| | 57 | FROM restoran_broj_naracki rbn |
| | 58 | JOIN restoran r ON rbn.restoran_id=r.id |
| | 59 | WHERE rbn.broj_na_naracki = (SELECT MAX(broj_na_naracki) FROM restoran_broj_naracki); |
| | 60 | }}} |
| | 61 | }}} |
| | 62 | |
| | 63 | |
| | 64 | |