wiki:AdvancedReports

Напредни извештаи од базата (SQL)

  1. Упит за квартална анализа на приходите по вработен: - Со квартална анализа на приходите, можеме да ја разбереме разликата во приходите за секој вработен во секој квартал. може да помогне во разбирањето на влијанието на кварталните сезони врз приходите по работник.
  1. Упит за наоѓање на годишна просечна оцена за секоја работа во категоријата работни места - Преку годишната просечна оцена, со задоволство ги користиме просечните оценки за работните места во секоја категорија работни места во тековната година. Ова може да помогне да се операционализираат податоците на клиентите за квалитетот на работата низ категориите.
  1. Упит за да ја пронајдете годишната вкупна распределба на буџетот по категорија на работа - Со годишната распределба на буџетот, можете да измерите колку буџет е доделен за секоја работна категорија во тековната година.
  1. Упит за наоѓање на најмногу резервирани работни места и категории работни места за секој месец и секоја година - Овој упит ќе ви даде преглед на најрезервираните работни места и категориите работни места за секој месец од секоја година.

1. Упит за квартална анализа на приходите по вработен -

WITH quarterly_revenue AS (
    SELECT 
        DATE_TRUNC('quarter', b.booking_time) AS quarter_start,
        w.ID AS worker_id,
        SUM(p.amount) AS revenue
    FROM 
        Booking b
    JOIN 
        Payment p ON b.ID = p.booking_ID
    JOIN 
        Worker w ON b.worker_id = w.ID
    GROUP BY 
        quarter_start, w.ID
)
SELECT 
    quarter_start,
    w.username AS worker_username,
    revenue,
    SUM(revenue) OVER(PARTITION BY worker_id ORDER BY quarter_start) AS cumulative_revenue
FROM 
    quarterly_revenue qr
JOIN 
    User_entity w ON qr.worker_id = w.ID
ORDER BY 
    quarter_start, worker_username;

2. Упит за наоѓање на годишна просечна оцена за секоја работа во категоријата работни места -

WITH yearly_avg_rating AS (
    SELECT 
        DATE_PART('year', j.time) AS year,
        jc.name AS job_category,
        AVG(r.rating) AS avg_rating
    FROM 
        Job j
    JOIN 
        Booking b ON j.ID = b.job_id
    JOIN 
        Review r ON b.ID = r.booking_ID
    JOIN 
        Categorized c ON j.ID = c.job_id
    JOIN 
        Job_Category jc ON c.job_category_id = jc.ID
    GROUP BY 
        year, jc.name
)
SELECT 
    year,
    job_category,
    avg_rating
FROM 
    yearly_avg_rating
ORDER BY 
    year, job_category;

3. Упит за да ја пронајдете годишната вкупна распределба на буџетот по категорија на работа -

WITH yearly_budget_allocation AS (
    SELECT 
        DATE_PART('year', j.time) AS year,
        jc.name AS job_category,
        SUM(j.budget) AS total_budget
    FROM 
        Job j
    JOIN 
        Categorized c ON j.ID = c.job_id
    JOIN 
        Job_Category jc ON c.job_category_id = jc.ID
    GROUP BY 
        year, jc.name
)
SELECT 
    year,
    job_category,
    total_budget
FROM 
    yearly_budget_allocation
ORDER BY 
    year, job_category;

4. Упит за наоѓање на најмногу резервирани работни места и категории работни места за секој месец и секоја година -

SELECT 
    EXTRACT(YEAR FROM b.booking_time) AS year,
    EXTRACT(MONTH FROM b.booking_time) AS month,
    jc.name AS job_category,
    j.title AS job_title,
    COUNT(*) AS booking_count
FROM 
    Job j
JOIN 
    Booking b ON j.ID = b.job_id
JOIN 
    Categorized c ON j.ID = c.job_id
JOIN 
    Job_Category jc ON c.job_category_id = jc.ID
GROUP BY 
    year, month, jc.name, j.title
ORDER BY 
    year, month, booking_count DESC;

Last modified 3 months ago Last modified on 02/14/24 15:05:24
Note: See TracWiki for help on using the wiki.