Version 4 (modified by 10 hours ago) ( diff ) | ,
---|
Напредни извештаи од базата (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;
Note:
See TracWiki
for help on using the wiki.