Changes between Initial Version and Version 1 of AnalyticalStatisticalQuerying


Ignore:
Timestamp:
02/10/25 11:25:13 (12 days ago)
Author:
221164
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AnalyticalStatisticalQuerying

    v1 v1  
     1== Analytical and Statistical Queries
     2
     3**Daily Revenue**
     4{{{
     5SELECT
     6    DATE(timestamp) AS payment_date,
     7    SUM(amount) AS total_revenue
     8FROM payments
     9GROUP BY DATE(timestamp)
     10ORDER BY payment_date;
     11}}}
     12
     13**Daily Order Count and Average Order Value**
     14{{{
     15SELECT
     16    DATE(o.datetime) AS order_date,
     17    COUNT(o.id) AS total_orders,
     18    AVG(p.amount) AS avg_order_value
     19FROM orders o
     20JOIN payments p ON o.id = p.order_id
     21GROUP BY DATE(o.datetime)
     22ORDER BY order_date;
     23}}}
     24
     25**Order Distribution by Order Category**
     26{{{
     27SELECT
     28    c.name AS category,
     29    COUNT(oi.id) AS total_items_ordered
     30FROM order_items oi
     31JOIN products p ON oi.product_id = p.id
     32JOIN categories c ON p.category_id = c.id
     33GROUP BY c.name
     34ORDER BY total_items_ordered DESC;
     35}}}
     36
     37**Top 10 Best-Selling Products**
     38{{{
     39SELECT
     40    p.name AS product,
     41    SUM(oi.quantity) AS total_quantity_sold
     42FROM order_items oi
     43JOIN products p ON oi.product_id = p.id
     44GROUP BY p.name
     45ORDER BY total_quantity_sold DESC
     46LIMIT 10;
     47}}}
     48
     49**Online Orders vs. Tab Orders Count**
     50{{{
     51SELECT 'Online Orders' AS order_type, COUNT(*) AS total_orders
     52FROM online_orders
     53UNION ALL
     54SELECT 'Tab Orders' AS order_type, COUNT(*) AS total_orders
     55FROM tab_orders;
     56}}}
     57
     58**Revenue Split: Online vs Tab Orders**
     59{{{
     60SELECT
     61    'Online Orders' AS order_type,
     62    SUM(p.amount) AS total_revenue
     63FROM orders o
     64JOIN payments p ON o.id = p.order_id
     65JOIN online_orders oo ON o.id = oo.order_id;
     66
     67SELECT
     68    'Tab Orders' AS order_type,
     69    SUM(p.amount) AS total_revenue
     70FROM orders o
     71JOIN payments p ON o.id = p.order_id
     72JOIN tab_orders tord ON o.id = tord.order_id;
     73}}}
     74
     75**Average Shift Duration per Manager**
     76{{{
     77SELECT
     78    manager_id,
     79    AVG(EXTRACT(EPOCH FROM (end_time - start_time)) / 3600) AS avg_shift_duration_hours
     80FROM shifts
     81GROUP BY manager_id;
     82}}}
     83
     84**Orders Managed by Each Front Staff**
     85{{{
     86SELECT
     87    fs.employee_id,
     88    COUNT(tord.order_id) AS total_orders_managed
     89FROM tab_orders tord
     90JOIN front_staff fs ON tord.front_staff_id = fs.employee_id
     91GROUP BY fs.employee_id
     92ORDER BY total_orders_managed DESC;
     93}}}
     94
     95**Average Tip Percentage per Staff Role**
     96{{{
     97SELECT
     98    sr.name AS staff_role,
     99    AVG(fs.tip_percent) AS avg_tip_percent
     100FROM front_staff fs
     101JOIN staff_roles sr ON fs.staff_role_id = sr.id
     102GROUP BY sr.name;
     103}}}
     104
     105**Inventory Turnover Ratio per Product**
     106{{{
     107SELECT
     108    p.name AS product,
     109    inv.quantity AS current_inventory,
     110    SUM(oi.quantity) AS total_quantity_ordered,
     111    CASE
     112        WHEN inv.quantity = 0 THEN NULL
     113        ELSE SUM(oi.quantity)::decimal / inv.quantity
     114    END AS turnover_ratio
     115FROM products p
     116JOIN inventories inv ON p.id = inv.product_id
     117JOIN order_items oi ON p.id = oi.product_id
     118GROUP BY p.name, inv.quantity
     119ORDER BY turnover_ratio DESC;
     120}}}
     121
     122**Most Popular Table by Reservations**
     123{{{
     124SELECT
     125    table_number,
     126    COUNT(*) AS reservation_count
     127FROM frontstaff_managed_reservations
     128GROUP BY table_number
     129ORDER BY reservation_count DESC
     130LIMIT 1;
     131}}}
     132
     133**Reservations by Day of Week**
     134{{{
     135SELECT
     136    EXTRACT(DOW FROM datetime) AS day_of_week,  -- 0=Sunday, 1=Monday, etc.
     137    COUNT(*) AS total_reservations
     138FROM reservations
     139GROUP BY day_of_week
     140ORDER BY total_reservations DESC;
     141}}}