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
WITH kolicina_na_mrodadeni_menu_items_po_restoran AS ( SELECT n.restoran_id, nsm.menuitem_id, COUNT(DISTINCT n.id) AS br_prodadeni_menuitems_po_restoran FROM naracka n JOIN naracka_sodrzi_menu_item nsm ON n.id=nsm.naracka_id JOIN naplata na ON na.naracka_id=n.id GROUP BY n.restoran_id, nsm.menuitem_id ), presmetka_najprodavan_menu_item_po_restoran AS( 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 FROM kolicina_na_mrodadeni_menu_items_po_restoran ) 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 FROM presmetka_najprodavan_menu_item_po_restoran nmipr JOIN restoran r ON nmipr.restoran_id=r.id JOIN menu_item mi ON nmipr.menuitem_id=mi.id WHERE RN=1;
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
WITH broj_na_naracki_potrosuvac_restoran_tekovna_godina AS( SELECT n.potrosuvac_id, n.restoran_id, COUNT(DISTINCT n.id) AS broj_na_naracki FROM naracka n WHERE extract(year from n.datum)=extract(year from now()) GROUP BY n.potrosuvac_id, n.restoran_id ), presmetka_najveren_potrosuvac_po_restoran_za_tekovna_godina AS( SELECT n.restoran_id, max(broj_na_naracki) as max_broj_naracki FROM broj_na_naracki_potrosuvac_restoran_tekovna_godina ) 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 FROM broj_na_naracki_potrosuvac_restoran_tekovna_godina a 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 JOIN potrosuvac p ON p.korisnik_id=a.potrosuvac_id JOIN restoran r ON a.restoran_id=r.id;
Restoran so najmnogu naracki vo poslednite tri meseci
CREATE VIEW restoran_broj_naracki AS SELECT n.restoran_id, COUNT(DISTINCT n.id) AS broj_na_naracki FROM naracka n WHERE n.datum between (now()-interval '3 months') and now() GROUP BY n.restoran_id; SELECT r.ime AS ime_na_restoran, rbn.broj_na_naracki FROM restoran_broj_naracki rbn JOIN restoran r ON rbn.restoran_id=r.id WHERE rbn.broj_na_naracki = (SELECT MAX(broj_na_naracki) FROM restoran_broj_naracki);
Zarabotka otstvarena preku narackite od aplikacijata za sekoj restoran na mesecno nivo
SELECT r.ime, DATE_PART('Month', n.datum) AS mesec, DATE_PART('Year', n.datum) AS godina, SUM(iznos) AS zarabotka FROM restoran r JOIN menu_item m ON r.id=m.restoran_id JOIN naracka_sodrzi_menu_item nsm ON m.id=nsm.menu_item_id JOIN naracka n ON nsm.naracka_id=n.id JOIN naplata np ON n.id=np.naracka_id GROUP BY r.ime, DATE_PART('Month', n.datum), DATE_PART('Year', n.datum);
Kolicina na prodadeni parcinja za sekoj proizvod ponuden vo restoranite, podredeni po popularnost na godisno nivo (najnaracuvaniot proizvod prv)
SELECT m.ime, DATE_PART('Year', n.datum) AS godina, SUM(nsm.quantity) AS kolicina FROM menu_item m JOIN naracka_sodrzi_menu_item nsm ON m.id=nsm.menu_item_id JOIN naracka n ON nsm.naracka_id=n.id GROUP BY m.ime, DATE_PART('Year', n.datum) ORDER BY SUM(nsm.quantity) DESC;
Broj na naracki za sekoj restoran za sekoj mesec
SELECT r.ime, DATE_PART('Month', n.datum) AS mesec, DATE_PART('Year', n.datum) as godina, count(nsm.naracka_id) AS broj_na_naracki FROM restoran r JOIN menu_item m ON r.id=m.restoran_id JOIN naracka_sodrzi_menu_item nsm ON m.id=nsm.menu_item_id JOIN naracka n on nsm.naracka_id=n.id GROUP BY r.ime, DATE_PART('Month', n.datum), DATE_PART('Year', n.datum);
Pregled na broj na naracki po tip na naplata za sekoj restoran na mesecno nivo
SELECT r.ime, np.nacin_na_plakjane, DATE_PART('Month', n.datum) AS mesec, DATE_PART('Year', n.datum) as godina, COUNT(DISTINCT n.id) AS broj_na_naracki FROM restoran r JOIN menu_item m ON r.id=m.restoran_id JOIN naracka_sodrzi_menu_item nsm ON m.id=nsm.menu_item_id JOIN naracka n on nsm.naracka_id=n.id JOIN naplata np ON n.id=np.naracka_id GROUP BY r.ime, np.nacin_na_plakjane, DATE_PART('Month', n.datum), DATE_PART('Year', n.datum);
Last modified
3 weeks ago
Last modified on 04/22/24 20:04:31
Note:
See TracWiki
for help on using the wiki.