wiki:AdvancedDatabaseReports

Version 16 (modified by 181085, 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
Note: See TracWiki for help on using the wiki.