Changes between Version 1 and Version 2 of AdvancedReports


Ignore:
Timestamp:
02/06/25 17:57:07 (2 weeks ago)
Author:
221028
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReports

    v1 v2  
    11= Напредни извештаи од базата (SQL и складирани процедури) =
    22
    3 === Извештај за студенти и бројот на експериментите кои ги направиле за една недела ===
     3=== Извештај за студенти и бројот на експериментите кои ги извршиле ===
    44{{{#!sql
    55SELECT
    6     u.user_name,
    7     u.user_surname,
    8     COUNT(e.experiment_id) AS experiment_count
    9 FROM
    10     User u
    11 JOIN
    12     Experiment e ON u.user_id = e.user_id
     6    s.student_id,
     7    u.user_name || ' ' || u.user_surname AS full_name,
     8    COUNT(up.experiment_id) AS total_experiments
     9FROM Student s
     10JOIN "User" u ON s.student_id = u.user_id
     11JOIN UserParticipatesInExperiment up ON s.student_id = up.user_id
     12JOIN Experiment e ON up.experiment_id = e.experiment_id
    1313WHERE
    14     u.professor_username = 'profesor_username'  -- Тука треба да се замени со корисничкото име на професорот
    15     AND e.time_stamp >= NOW() - INTERVAL 1 WEEK  -- Филтер за експерименти студентите што ги направиле во последната недела
    16 GROUP BY
    17     u.user_name, u.user_surname
    18 ORDER BY
    19     experiment_count DESC;
     14    s.teacher_id = :teacher_id  -- Замени со ID на професорот
     15GROUP BY s.student_id, full_name
     16ORDER BY total_experiments DESC;
    2017
    2118}}}
     
    3936{{{#!sql
    4037SELECT
    41     u.user_name,
    42     u.user_surname,
    43     GROUP_CONCAT(e.result SEPARATOR ', ') AS results
    44 FROM
    45     Users u
    46 JOIN
    47     Experiment e ON u.user_id = e.user_id
    48 WHERE
    49     u.professor_username = 'profesor_username'  -- Тука треба да се замени со корисничкото име
    50 GROUP BY
    51     u.user_name, u.user_surname;
     38    s.student_id,
     39    u.user_name || ' ' || u.user_surname AS full_name,
     40    e.experiment_id,
     41    e.result,
     42    up.participation_timestamp AS participation_time
     43FROM Student s
     44JOIN "User" u ON s.student_id = u.user_id
     45JOIN UserParticipatesInExperiment up ON s.student_id = up.user_id
     46JOIN Experiment e ON up.experiment_id = e.experiment_id
     47ORDER BY u.user_name, up.participation_timestamp DESC;
     48
    5249}}}
    5350
     
    5653{{{#!sql
    5754SELECT
    58     u.user_name,
    59     u.user_surname
    60 FROM
    61     Users u
    62 JOIN
    63     Experiment e ON u.user_id = e.user_id
    64 JOIN
    65     Reaction r ON e.reaction_id = r.reaction_id
    66 WHERE
    67      u.professor_username = 'profesor_username'  -- Тука треба да се замени со корисничкото име
    68     AND r.product = 'H2O'  -- Тука треба да се замени со името на производот од реакцијата
    69 ORDER BY
    70     u.user_surname ASC;
     55    s.student_id,
     56    u.user_name || ' ' || u.user_surname AS full_name,
     57    e.experiment_id,
     58    e.result
     59FROM Student s
     60JOIN "User" u ON s.student_id = u.user_id
     61JOIN UserParticipatesInExperiment up ON s.student_id = up.user_id
     62JOIN Experiment e ON up.experiment_id = e.experiment_id
     63ORDER BY u.user_name;
     64
    7165}}}
    7266
     
    7569{{{#!sql
    7670SELECT
    77     AVG(ele_count) AS average_instruments_per_experiment
     71    AVG(instrument_count) AS average_lab_equipment_per_experiment
    7872FROM (
    7973    SELECT
    80         e.experiment_id,
    81         COUNT(lee.equipment_id) AS ele_count
    82     FROM
    83         Experiment e
    84     JOIN
    85         ExperimentLabEquipment lee ON e.experiment_id = lee.experiment_id
    86     GROUP BY
    87         e.experiment_id
    88 ) AS subquery;
     74        e.experiment_id,
     75        COUNT(ele.equipment_id) AS instrument_count
     76    FROM Experiment e
     77    LEFT JOIN ExperimentLabEquipment ele ON e.experiment_id = ele.experiment_id
     78    GROUP BY e.experiment_id
     79) subquery;
     80
    8981}}}
    9082
     83=== Извештај за најчесто користени хемиски елементи во екпериментите ===
     84
     85{{{#!sql
     86SELECT
     87    el.element_name,
     88    COUNT(r.reaction_id) AS total_uses
     89FROM Elements el
     90JOIN Reaction r ON el.element_id = r.element1_id OR el.element_id = r.element2_id
     91GROUP BY el.element_name
     92ORDER BY total_uses DESC;
     93
     94}}}
     95
     96=== Извештај за најчесто реализирани експерименти ===
     97
     98{{{#!sql
     99SELECT
     100    e.experiment_id,
     101    e.result,
     102    COUNT(up.user_id) AS student_participation
     103FROM Experiment e
     104JOIN UserParticipatesInExperiment up ON e.experiment_id = up.experiment_id
     105GROUP BY e.experiment_id, e.result
     106ORDER BY student_participation DESC;
     107
     108}}}
     109
     110=== Извештај за студенти кои никогаш не учествувале во екперименти ===
     111
     112{{{#!sql
     113SELECT
     114    s.student_id,
     115    u.user_name || ' ' || u.user_surname AS full_name
     116FROM Student s
     117JOIN "User" u ON s.student_id = u.user_id
     118LEFT JOIN UserParticipatesInExperiment up ON s.student_id = up.user_id
     119WHERE s.teacher_id = :teacher_id  -- Замени со ID на професорот
     120AND up.user_id IS NULL;
     121
     122}}}
     123
     124=== Извештај за студенти кои имаат учествувано во помалку од одреден број екперименти  ===
     125
     126{{{#!sql
     127SELECT
     128    s.student_id,
     129    u.user_name || ' ' || u.user_surname AS full_name,
     130    COUNT(up.experiment_id) AS total_experiments
     131FROM Student s
     132JOIN "User" u ON s.student_id = u.user_id
     133LEFT JOIN UserParticipatesInExperiment up ON s.student_id = up.user_id
     134GROUP BY s.student_id, full_name
     135HAVING COUNT(up.experiment_id) < 3
     136ORDER BY total_experiments ASC;
     137
     138}}}
     139
     140=== Извештај за број на студенти по професор и просечен број на екперименти по студент  ===
     141
     142{{{#!sql
     143SELECT
     144    t.teacher_id,
     145    u.user_name || ' ' || u.user_surname AS full_name,
     146    COUNT(DISTINCT s.student_id) AS total_students,
     147    COUNT(up.experiment_id) AS total_experiments,
     148    ROUND(
     149        COUNT(up.experiment_id) * 1.0 / NULLIF(COUNT(DISTINCT s.student_id), 0), 2
     150    ) AS avg_experiments_per_student
     151FROM Teacher t
     152JOIN "User" u ON t.teacher_id = u.user_id
     153LEFT JOIN Student s ON t.teacher_id = s.teacher_id
     154LEFT JOIN UserParticipatesInExperiment up ON s.student_id = up.user_id
     155GROUP BY t.teacher_id, full_name
     156ORDER BY avg_experiments_per_student DESC;
     157
     158}}}
     159
     160=== Извештај за број на студентите бројот на прегледани хемиски елементи и лабараториска опрема ===
     161
     162{{{#!sql
     163SELECT
     164    s.student_id,
     165    u.user_name || ' ' || u.user_surname AS full_name,
     166    COUNT(DISTINCT ue.element_id) AS total_elements_viewed,
     167    COUNT(DISTINCT ul.equipment_id) AS total_lab_equipment_viewed
     168FROM Student s
     169JOIN "User" u ON s.student_id = u.user_id
     170LEFT JOIN UserViewsElement ue ON s.student_id = ue.user_id
     171LEFT JOIN UserViewsLabEquipment ul ON s.student_id = ul.user_id
     172GROUP BY s.student_id, full_name
     173ORDER BY total_elements_viewed DESC, total_lab_equipment_viewed DESC;
     174
     175}}}
     176
     177
     178
     179