wiki:AdvancedReports

Version 4 (modified by 223270, 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.