Changes between Initial Version and Version 1 of advancedreports


Ignore:
Timestamp:
01/30/26 14:30:38 (5 hours ago)
Author:
231175
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • advancedreports

    v1 v1  
     1= Напредни извештаи од базата =
     2
     3== 1. Промет по курс ==
     4
     5'''Опис:''' Извештајот го прикажува вкупниот промет генериран од сите плаќања за секоја верзија на секој курс, филтриран по корисник и јазик на превод.
     6
     7'''SQL:'''
     8{{{
     9SELECT
     10    c.id AS course_id,
     11    ct.title_short AS course_title,
     12    cv.version_number AS course_version,
     13    cv.active AS is_active,
     14    SUM(p.amount) AS total_amount
     15FROM course c
     16         JOIN course_translate ct ON c.id = ct.course_id
     17         JOIN course_version cv ON c.id = cv.course_id
     18         JOIN enrollment e ON e.course_version_id = cv.id
     19         JOIN payment p ON p.enrollment_id = e.id
     20WHERE e.user_id = :user_id
     21  AND ct.language = :language
     22GROUP BY
     23    c.id,
     24    ct.title_short,
     25    cv.version_number;
     26}}}
     27
     28'''Параметри:'''
     29* user_id: ИД на корисникот
     30* language: јазик за превод
     31
     32'''Релациона алгебра:'''
     33{{{
     34π course_id←c.id, course_title←ct.title_short, course_version←cv.version_number, is_active←cv.active, total_amount←SUM(p.amount) (
     35  γ c.id, ct.title_short, cv.version_number, cv.active; SUM(p.amount) (
     36    σ e.user_id = :user_id ∧ ct.language = :language (
     37      course ⋈ c.id = ct.course_id course_translate
     38             ⋈ c.id = cv.course_id course_version
     39             ⋈ cv.id = e.course_version_id enrollment
     40             ⋈ e.id = p.enrollment_id payment
     41    )
     42  )
     43)
     44}}}
     45
     46----
     47
     48== 2. Промет по месец ==
     49
     50'''Опис:''' Извештајот го прикажува вкупниот промет групиран по година и месец, сортиран од најнов кон најстар период.
     51
     52'''SQL:'''
     53{{{
     54SELECT
     55    EXTRACT(YEAR FROM p.payment_date) AS year,
     56    EXTRACT(MONTH FROM p.payment_date) AS month,
     57    SUM(p.amount) AS total_revenue
     58FROM payment p
     59GROUP BY
     60    EXTRACT(YEAR FROM p.payment_date),
     61    EXTRACT(MONTH FROM p.payment_date)
     62ORDER BY
     63    year DESC,
     64    month DESC;
     65}}}
     66
     67'''Релациона алгебра:'''
     68{{{
     69τ year DESC, month DESC (
     70  π year←EXTRACT(YEAR FROM payment_date), month←EXTRACT(MONTH FROM payment_date), total_revenue←SUM(amount) (
     71    γ EXTRACT(YEAR FROM payment_date), EXTRACT(MONTH FROM payment_date); SUM(amount) (
     72      payment
     73    )
     74  )
     75)
     76}}}
     77
     78----
     79
     80== 3. Најпопуларни курсеви според оценка ==
     81
     82'''Опис:''' Извештајот ги прикажува сите курсеви со нивните верзии, вкупен број на запишувања, просечна оценка и вкупен број на рецензии, сортирани по најдобра просечна оценка.
     83
     84'''SQL:'''
     85{{{
     86SELECT
     87    c.id AS course_id,
     88    ct.title_short AS course_title,
     89    cv.version_number AS course_version,
     90    cv.active AS is_active,
     91    COUNT(DISTINCT e.id) AS total_enrollments,
     92    SUM(r.rating) / COUNT(r.id) AS average_rating,
     93    COUNT(r.id) AS total_reviews
     94FROM course c
     95JOIN course_translate ct ON c.id = ct.course_id
     96JOIN course_version cv ON c.id = cv.course_id
     97JOIN enrollment e ON cv.id = e.course_version_id
     98JOIN review r ON e.id = r.enrollment_id
     99WHERE ct.language = :language
     100GROUP BY c.id, ct.id, cv.id
     101ORDER BY SUM(r.rating) / COUNT(r.id) DESC
     102}}}
     103
     104'''Параметри:'''
     105* language: јазик за превод
     106
     107'''Релациона алгебра:'''
     108{{{
     109τ average_rating DESC (
     110  π course_id←c.id, course_title←ct.title_short, course_version←cv.version_number, is_active←cv.active,
     111     total_enrollments←COUNT(DISTINCT e.id), average_rating←SUM(r.rating)/COUNT(r.id), total_reviews←COUNT(r.id) (
     112    γ c.id, ct.id, cv.id; COUNT(DISTINCT e.id), SUM(r.rating), COUNT(r.id) (
     113      σ ct.language = :language (
     114        course ⋈ c.id = ct.course_id course_translate
     115               ⋈ c.id = cv.course_id course_version
     116               ⋈ cv.id = e.course_version_id enrollment
     117               ⋈ e.id = r.enrollment_id review
     118      )
     119    )
     120  )
     121)
     122}}}
     123
     124----