Changes between Version 6 and Version 7 of AnalyticalStatisticalQuerying


Ignore:
Timestamp:
09/19/25 02:08:03 (7 hours ago)
Author:
226030
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AnalyticalStatisticalQuerying

    v6 v7  
    88    COUNT(DISTINCT o.id) as total_orders,
    99    COUNT(DISTINCT r.user_id) as unique_customers,
    10     COUNT(DISTINCT fs.employee_id) as active_employees,
     10    COUNT(DISTINCT a.employee_id) as active_employees,
    1111    COALESCE(SUM(oi.quantity * oi.price), 0) as daily_revenue
    1212FROM generate_series(
     
    1515                         '1 day'::interval
    1616         ) dates(operation_date)
    17          LEFT JOIN reservations r
    18                    ON DATE(r.datetime) = dates.operation_date
    19     LEFT JOIN orders o
    20 ON DATE(o.datetime) = dates.operation_date
    21     LEFT JOIN order_items oi
    22     ON o.id = oi.order_id
    23     LEFT JOIN tab_orders to2
    24     ON o.id = to2.order_id
    25     LEFT JOIN front_staff fs
    26     ON to2.front_staff_id = fs.employee_id
     17         LEFT JOIN reservations r ON DATE(r.datetime) = dates.operation_date
     18    LEFT JOIN orders o ON DATE(o.datetime) = dates.operation_date
     19    LEFT JOIN order_items oi ON o.id = oi.order_id
     20    LEFT JOIN shifts s ON DATE(s.date) = dates.operation_date
     21    LEFT JOIN assignments a ON s.id = a.shift_id
    2722GROUP BY dates.operation_date
    2823ORDER BY dates.operation_date DESC;
     
    4136         JOIN online_orders oo ON o.id = oo.order_id
    4237WHERE o.datetime::date BETWEEN p_start_date AND p_end_date
    43 
    4438UNION ALL
    45 
    4639SELECT 'Tab Orders'::text AS order_type,
    4740        COALESCE(SUM(p.amount), 0)::numeric(14,2) AS total_revenue
     
    8073        start_time::time AS start_t,
    8174        end_time::time AS end_t
    82     FROM
    83         shifts
     75    FROM shifts
    8476)
    8577SELECT
    8678    TO_CHAR(o.datetime, 'YYYY-MM') AS period,
    8779    dsp.start_t::text || '-' || dsp.end_t::text AS shift_period,
    88     SUM(oi.price * oi.quantity) AS total_revenue
     80        SUM(oi.price * oi.quantity) AS total_revenue
    8981FROM
    9082    orders o
     
    111103        a.employee_id AS manager_id
    112104    FROM assignments a
    113              JOIN shifts s   ON s.id = a.shift_id
     105             JOIN shifts s ON s.id = a.shift_id
    114106             JOIN managers m ON m.employee_id = a.employee_id
    115107    WHERE s.date >= date_trunc('year', CURRENT_DATE)::date
    116     AND s.date <  (date_trunc('year', CURRENT_DATE) + INTERVAL '1 year')::date
     108    AND s.date < (date_trunc('year', CURRENT_DATE) + INTERVAL '1 year')::date
    117109    ),
    118110    shift_revenue AS (
     
    129121ON o.datetime::date = mws.date
    130122    AND o.datetime::time >= mws.start_time
    131     AND o.datetime::time <  mws.end_time
     123    AND o.datetime::time < mws.end_time
    132124    LEFT JOIN order_items oi ON oi.order_id = o.id
    133125GROUP BY
     
    144136    sr.shift_date,
    145137    sr.start_time AS shift_start_time,
    146     sr.end_time   AS shift_end_time,
    147     u.email       AS manager_email,
     138    sr.end_time AS shift_end_time,
     139    u.email AS manager_email,
    148140    sr.shift_revenue,
    149141    ma.avg_revenue_per_shift,
     
    151143FROM shift_revenue sr
    152144         JOIN monthly_avg ma ON ma.month_start = sr.month_start
    153          JOIN managers m     ON m.employee_id = sr.manager_id
    154          JOIN employees e    ON e.user_id    = m.employee_id
    155          JOIN users u        ON u.id          = e.user_id
     145         JOIN managers m ON m.employee_id = sr.manager_id
     146         JOIN employees e ON e.user_id = m.employee_id
     147         JOIN users u ON u.id = e.user_id
    156148WHERE sr.shift_revenue > ma.avg_revenue_per_shift
    157149ORDER BY period DESC, sr.shift_revenue DESC, sr.shift_date DESC;
     
    213205             LEFT JOIN assignments a ON fs.employee_id = a.employee_id
    214206             LEFT JOIN shifts s ON a.shift_id = s.id
    215              LEFT JOIN tab_orders to2 ON to2.front_staff_id = fs.employee_id
    216              LEFT JOIN orders o ON o.id = to2.order_id
     207             LEFT JOIN orders o ON o.employee_id = fs.employee_id
    217208        AND o.datetime >= CURRENT_DATE - INTERVAL '3 months'
    218209    LEFT JOIN order_items oi ON o.id = oi.order_id