== Напредни извештаи од базата (SQL) === Дестинации со најголем број на разновидни настани {{{ SELECT d.imeLokacija, COUNT(DISTINCT n.kategorija) AS brojRaznovidniNastani FROM DESTINACII d JOIN NASTANI n ON d.idDest = n.idDest GROUP BY d.imeLokacija ORDER BY brojRaznovidniNastani DESC; }}} === Настани на одредена дестинација Дополнително, за да се прикажат различни категории на настани за одредена дестинација: {{{ SELECT DISTINCT n.kategorija FROM NASTANI n JOIN DESTINACII d ON n.idDest = d.idDest WHERE d.imeLokacija = 'Охрид'; }}} === Топ 10 дестинации според рецензии (атрибут kvalitet) {{{ SELECT d.imeLokacija, AVG(r.kvalitet) AS prosekKvalitet FROM DESTINACII d JOIN RECENZII r ON d.idDest = r.idDest GROUP BY d.imeLokacija ORDER BY prosekKvalitet DESC LIMIT 10; }}} === Дестинации со најголем број на активности под различни цени т.е. опсези {{{ SELECT d.imeLokacija, SUM(CASE WHEN a.iznos < 20 THEN 1 ELSE 0 END) AS aktivnostiPod20, SUM(CASE WHEN a.iznos < 50 THEN 1 ELSE 0 END) AS aktivnostiPod50, SUM(CASE WHEN a.iznos < 100 THEN 1 ELSE 0 END) AS aktivnostiPod100 FROM DESTINACII d JOIN AKTIVNOSTI a ON d.idDest = a.idDest GROUP BY d.imeLokacija ORDER BY aktivnostiPod20 DESC, aktivnostiPod50 DESC, aktivnostiPod100 DESC; }}} === Дестинации со најголем процент на достапни(евтини) активности {{{ SELECT d.imeLokacija, COUNT(a.idAktivnost) AS vkupnoAktivnosti, SUM(CASE WHEN a.iznos < 20 THEN 1 ELSE 0 END) AS efiniAktivnosti, (SUM(CASE WHEN a.iznos < 20 THEN 1 ELSE 0 END) * 100.0 / COUNT(a.idAktivnost)) AS procentEfiniAktivnosti FROM DESTINACII d JOIN AKTIVNOSTI a ON d.idDest = a.idDest GROUP BY d.imeLokacija HAVING COUNT(a.idAktivnost) > 0 ORDER BY procentEfiniAktivnosti DESC; }}} === Топ 10 корисници со најголем број напишани рецензии {{{ SELECT k.ime, k.prezime, COUNT(r.idRecenzija) AS brojRecenzii FROM KORISNICI k JOIN RECENZII r ON k.idKorisnik = r.idKorisnik GROUP BY k.idKorisnik, k.ime, k.prezime ORDER BY brojRecenzii DESC LIMIT 10; }}} === Најисплатливи пакети (Best value for money) {{{ SELECT p.imePaket, p.cena, TIMESTAMPDIFF(DAY, p.pochetok, p.kraj) AS vremeTraenjeDena, p.cena / TIMESTAMPDIFF(DAY, p.pochetok, p.kraj) AS cenaPoDen FROM PAKETI p WHERE TIMESTAMPDIFF(DAY, p.pochetok, p.kraj) > 0 ORDER BY cenaPoDen ASC LIMIT 10; }}}