wiki:AdvancedReports

Version 1 (modified by 221028, 2 days ago) ( diff )

--

Напредни извештаи од базата (SQL и складирани процедури)

Извештај за студенти и бројот на експериментите кои ги направиле за една недела

SELECT 
    u.user_name,
    u.user_surname,
    COUNT(e.experiment_id) AS experiment_count
FROM 
    User u
JOIN 
    Experiment e ON u.user_id = e.user_id
WHERE 
    u.professor_username = 'profesor_username'  -- Тука треба да се замени со корисничкото име на професорот
    AND e.time_stamp >= NOW() - INTERVAL 1 WEEK  -- Филтер за експерименти студентите што ги направиле во последната недела
GROUP BY 
    u.user_name, u.user_surname
ORDER BY 
    experiment_count DESC;

Извештај за лабораториските инструменти и колку пати биле искористени

SELECT 
    le.equipment_name,
    COUNT(ele.experiment_id) AS usage_count
FROM 
    ExperimentLabEquipment ele
JOIN 
    LabEquipment le ON ele.equipment_id = le.equipment_id
GROUP BY 
    le.equipment_name
ORDER BY 
    usage_count DESC;

Извештај за студентите и експериментите кои ги извршиле

SELECT 
    u.user_name,
    u.user_surname,
    GROUP_CONCAT(e.result SEPARATOR ', ') AS results
FROM 
    Users u
JOIN 
    Experiment e ON u.user_id = e.user_id
WHERE 
    u.professor_username = 'profesor_username'  -- Тука треба да се замени со корисничкото име 
GROUP BY 
    u.user_name, u.user_surname;

Извештај за студентите од одреден професор кои го извршиле селектираниот експеримент

SELECT 
    u.user_name,
    u.user_surname
FROM 
    Users u
JOIN 
    Experiment e ON u.user_id = e.user_id
JOIN 
    Reaction r ON e.reaction_id = r.reaction_id
WHERE 
     u.professor_username = 'profesor_username'  -- Тука треба да се замени со корисничкото име 
    AND r.product = 'H2O'  -- Тука треба да се замени со името на производот од реакцијата
ORDER BY 
    u.user_surname ASC;

Извештај за просечен број на лабораториски инструменти искористени за екпериментите

SELECT 
    AVG(ele_count) AS average_instruments_per_experiment
FROM (
    SELECT 
        e.experiment_id,
        COUNT(lee.equipment_id) AS ele_count
    FROM 
        Experiment e
    JOIN 
        ExperimentLabEquipment lee ON e.experiment_id = lee.experiment_id
    GROUP BY 
        e.experiment_id
) AS subquery;
Note: See TracWiki for help on using the wiki.