wiki:AdvancedDatabaseReports

Version 10 (modified by 181085, 2 years ago) ( diff )

--

Напредни извештаи од базата

Листа на извештаи

1. Патникот може да побара историјат за одредено време кој ќе се состои од тоа колку километри поминал со секој возач, колку вкупно платил и која била просечната цена по километар.
2. Овој прашалник ке ни врати многу пресмети за сите возачи во апликацијата, колку вкупно патувања извршиле, колку различни патници возеле, со каков автомобил работат, каква им е оценката(за тие кои имаат минимум 2 оценки - ова е 2 за да нема потреба да ја полнам премногу базата, реално би било повеќе), колку вкупно заработиле, колку заработувале во просек за секое барање, односно патување и колку вкупно километри поминале.
3. Овој прашалник е обратниот од првиот, тука секој возач може да побара историјат за секој патник кој тој возач го има возено, како и колку километри изминале заедно вкупно, колку била вкупната заработка од тој патник, колку била заработката во просек по километар, колкава просечна оценка има добиено од секој патник, како и колку вкупно заеднички патувања тие двајца оствариле.

SQL прашалници

1

SELECT d.driver_id, SUM(d.km_travelled) as km_travelled_with_driver, 
SUM(pay.total_sum_payed) as total_price_paid, SUM(d.km_travelled)/SUM(pay.total_sum_payed) as price_per_km
FROM request r
JOIN drive d ON r.request_id = d.request_id 
JOIN payment pay ON pay.passenger_id = r.passenger_id
WHERE r.passenger_id = '77d9c766-e0c1-4e53-86d0-bafc3101a1ac' AND 
d.start_time between now() and now() - interval '2 months' 
GROUP BY d.driver_id 
ORDER BY price_per_km ASC 

2

SELECT dr.driver_id, dr.email, c.make, c.model, (CASE WHEN num_grades > 2 THEN AVG(de.grade) ELSE NULL END) as driver_grade, COUNT(*) as number_of_drives, 
SUM(p.total_sum_payed) as total_money_made, COUNT(DISTINCT de.request_id) as number_of_different_requests,
COUNT(DISTINCT r.passenger_id) as number_of_different_passengers, (SUM(p.total_sum_payed))/COUNT(DISTINCT de.request_id) as average_money_per_request,
SUM(de.km_travelled) as total_km_travelled
FROM 
driver dr
LEFT JOIN car c ON dr.driver_id = c.driver_id 
JOIN drive de ON dr.driver_id = de.driver_id 
JOIN payment p ON de.drive_id = p.drive_id 
LEFT JOIN request r ON de.request_id = r.request_id 
GROUP BY dr.driver_id, dr.email, c.make, c.model
ORDER BY driver_grade DESC

3

SELECT p.passenger_id, p.email, SUM(d.km_travelled) as km_travelled_with_passenger, 
SUM(pay.total_sum_payed) as total_earnings, SUM(pay.total_sum_payed)/SUM(d.km_travelled) as earnings_per_km, 
AVG(d.grade) as average_grade_received_per_drive, COUNT(*) as number_of_drives
FROM request r
LEFT JOIN passenger p ON r.passenger_id = p.passenger_id 
JOIN drive d ON r.request_id = d.request_id 
JOIN payment pay ON d.drive_id = pay.drive_id 
WHERE d.driver_id = '2219f3ad-48dc-4b6a-9877-143b05d6b608' 
GROUP BY p.passenger_id , p.email 
ORDER BY earnings_per_km DESC
Note: See TracWiki for help on using the wiki.