Skip to content

A shorter solution to 80_driversInfo that doesn't use any cursors #2

Description

@dnovatchev

I think that 80_driversInfo has a shorter, non-cursor-dependent solution. Something like this:

CREATE PROCEDURE solution()
BEGIN
ALTER TABLE inspections CONVERT TO CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';

SELECT summary
FROM (    
        SELECT CONCAT(' Total miles driven by all drivers combined: ',
              SUM(miles_logged)
             ) summary, '0' r
FROM inspections
UNION
SELECT summary, driver_name r
        from (SELECT summary, driver_name
                FROM (SELECT CONCAT(' Name: ', driver_name,
                            '; number of inspections: ',
                            COUNT(*),
                            '; miles driven: ',
                            SUM(miles_logged)
                            ) summary,  driver_name
                        FROM inspections
                        GROUP BY driver_name
                        ORDER BY driver_name                
                    ) x   
            ) y 
        UNION     
        SELECT summary, CONCAT(driver_name, '2') r
        FROM (SELECT CONCAT('  date: ', date, '; miles covered: ', miles_logged) summary,
                    driver_name
            FROM inspections
            GROUP BY driver_name, date, miles_logged
            order BY driver_name, date
            ) z
) t
Order BY r;
END

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions