AdvancedReports: AdvancedReports.sql

File AdvancedReports.sql, 2.9 KB (added by 223270, 2 weeks ago)
Line 
1/*destinacii so najmn raznovidni nastani*/
2/*SELECT d.imeLokacija, COUNT(DISTINCT n.kategorija) AS brojRaznovidniNastani
3FROM DESTINACII d
4JOIN NASTANI n ON d.idDest = n.idDest
5GROUP BY d.imeLokacija
6ORDER BY brojRaznovidniNastani DESC;*/
7SELECT d.imeLokacija AS destinacija, COUNT(DISTINCT n.naziv) AS broj_nastani
8FROM DESTINACII d
9JOIN NASTANI n ON d.idDest = n.idDest
10GROUP BY d.imeLokacija
11HAVING COUNT(DISTINCT n.naziv) = (
12 SELECT MAX(broj_nastani)
13 FROM (
14 SELECT COUNT(DISTINCT n.naziv) AS broj_nastani
15 FROM DESTINACII d
16 JOIN NASTANI n ON d.idDest = n.idDest
17 GROUP BY d.imeLokacija
18 ) AS temp
19);
20
21
22/*nastani na odredena dest*/
23SELECT DISTINCT n.naziv
24FROM NASTANI n
25JOIN DESTINACII d ON n.idDest = d.idDest
26WHERE d.imeLokacija = 'Охрид';
27
28
29/*top 10 dest spored recenzija*/
30/*SELECT d.imeLokacija, AVG(r.kvalitet) AS prosekKvalitet
31FROM DESTINACII d
32JOIN RECENZII r ON d.idDest = r.idDest
33GROUP BY d.imeLokacija
34ORDER BY prosekKvalitet DESC
35LIMIT 10;*/
36SELECT idKorisnik, COUNT(*) AS broj_recenzii
37FROM RECENZII
38GROUP BY idKorisnik
39HAVING COUNT(*) > (SELECT COUNT(*) * 0.9 FROM RECENZII);
40
41
42/*dest so najgolem br aktivnosti so razlichni cena/opsezi*/
43SELECT d.imeLokacija,
44 SUM(CASE WHEN a.iznos < 20 THEN 1 ELSE 0 END) AS aktivnostiPod20,
45 SUM(CASE WHEN a.iznos < 50 THEN 1 ELSE 0 END) AS aktivnostiPod50,
46 SUM(CASE WHEN a.iznos < 100 THEN 1 ELSE 0 END) AS aktivnostiPod100
47FROM DESTINACII d
48JOIN AKTIVNOSTI a ON d.idDest = a.idDest
49GROUP BY d.imeLokacija
50ORDER BY aktivnostiPod20 DESC, aktivnostiPod50 DESC, aktivnostiPod100 DESC;
51
52/*dest so najevtini aktivnosti*/
53SELECT d.imeLokacija,
54 COUNT(a.idAktivnost) AS vkupnoAktivnosti,
55 SUM(CASE WHEN a.iznos < 20 THEN 1 ELSE 0 END) AS efiniAktivnosti,
56 (SUM(CASE WHEN a.iznos < 20 THEN 1 ELSE 0 END) * 100.0 / COUNT(a.idAktivnost)) AS procentEfiniAktivnosti
57FROM DESTINACII d
58JOIN AKTIVNOSTI a ON d.idDest = a.idDest
59GROUP BY d.imeLokacija
60HAVING COUNT(a.idAktivnost) > 0
61ORDER BY procentEfiniAktivnosti DESC;
62
63
64/*top 10 korisnici so najmn recenzii*/
65/*SELECT k.ime, k.prezime, COUNT(r.idRecenzija) AS brojRecenzii
66FROM KORISNICI k
67JOIN RECENZII r ON k.idKorisnik = r.idKorisnik
68GROUP BY k.idKorisnik, k.ime, k.prezime
69ORDER BY brojRecenzii DESC
70LIMIT 10;*/
71SELECT idKorisnik, COUNT(*) AS broj_recenzii
72FROM RECENZII
73GROUP BY idKorisnik
74HAVING COUNT(*) > (SELECT COUNT(*) * 0.9 FROM RECENZII);
75
76/*value for money*/
77/*SELECT p.imePaket, p.cena, TIMESTAMPDIFF(DAY, p.pochetok, p.kraj) AS vremeTraenjeDena,
78 p.cena / TIMESTAMPDIFF(DAY, p.pochetok, p.kraj) AS cenaPoDen
79FROM PAKETI p
80WHERE TIMESTAMPDIFF(DAY, p.pochetok, p.kraj) > 0
81ORDER BY cenaPoDen ASC
82LIMIT 10;*/
83SELECT p.imePaket AS paket,
84 p.cena / DATEDIFF(p.kraj, p.pochetok) AS cena_po_den
85FROM PAKETI p
86WHERE p.cena / DATEDIFF(p.kraj, p.pochetok) = (
87 SELECT MIN(p.cena / DATEDIFF(p.kraj, p.pochetok))
88 FROM PAKETI p
89);
90