Version 16 (modified by 22 months ago) ( diff ) | ,
---|
Напредни извештаи од базата
Листа на извештаи
1. Патникот може да побара историјат кој ќе се состои од тоа колку километри поминал со секој возач, колку вкупно платил и која била просечната цена по километар.
2. Овој прашалник ке ни врати многу пресмети за сите возачи во апликацијата, колку вкупно патувања извршиле, колку различни патници возеле, со каков автомобил работат, каква им е оценката(за тие кои имаат минимум 2 оценки - ова е 2 за да нема потреба да ја полнам премногу базата, реално би било повеќе), колку вкупно заработиле, колку заработувале во просек за секое барање, односно патување и колку вкупно километри поминале.
3. Овој прашалник е обратниот од првиот, тука секој возач може да побара историјат за секој патник кој тој возач го има возено, како и колку километри изминале заедно вкупно, колку била вкупната заработка од тој патник, колку била заработката во просек по километар, колкава просечна оценка има добиено од секој патник, како и колку вкупно заеднички патувања тие двајца оствариле.
SQL прашалници
1
SELECT uuid_generate_v4() as id, pay.passenger_id, d.driver_id, dr.first_name as driver_name, dr.surname as driver_surname, SUM(d.km_travelled) as km_travelled_with_driver, SUM(pay.total_sum_payed) as total_price_paid, SUM(pay.total_sum_payed)/SUM(d.km_travelled) as price_per_km FROM request r JOIN drive d ON r.request_id = d.request_id JOIN payment pay ON d.drive_id = pay.drive_id left join driver dr on d.driver_id = dr.driver_id GROUP BY d.driver_id, dr.first_name, dr.surname, pay.passenger_id ORDER BY price_per_km asc
2
SELECT uuid_generate_v4() as id, dr.driver_id, dr.email as driver_email, dr.first_name as driver_name, dr.surname as driver_surname, c.make, c.model, (CASE WHEN num_grades > 2 THEN AVG(de.grade) ELSE 0 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, dr.first_name, dr.surname, c.make, c.model ORDER BY driver_grade desc
3
SELECT uuid_generate_v4() as id, d.driver_id, p.passenger_id, p.email as passenger_email, p.first_name as passenger_name, p.surname as passenger_surname, 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 GROUP BY p.passenger_id , p.email, p.first_name, p.surname, d.driver_id ORDER BY earnings_per_km DESC