wiki:Напредни извештаи од базата (SQL и складирани процедури)

Version 2 (modified by 183175, 11 days ago) ( diff )

--

Напредни извештаи од базата (SQL и складирани процедури)

Неделен,Месечен,Годишен извештај

Weekly
Креираме прашалник каде велиме "за секој ден од неделата во последни 7 дена,
прикажи број нарачки и вкупен приход" :

SELECT TO_CHAR(order_date, 'Dy') AS label,
       COUNT(*) AS orders,
       SUM(total_price) AS revenue
FROM orders
WHERE order_date >= NOW() - INTERVAL '7 days'
GROUP BY label
ORDER BY MIN(order_date);


Monthly
Креираме прашалник каде велиме "за секој месец, преброј ги нарачките и пресметај вкупен приход" :

SELECT TO_CHAR(order_date, 'Mon') AS label,
       COUNT(*) AS orders,
       SUM(total_price) AS revenue
FROM orders
GROUP BY label
ORDER BY MIN(order_date);


Yearly
Креираме прашалник каде велиме "за секоја година, прикажи колку нарачки имало и колку приход е остварено" :

SELECT EXTRACT(YEAR FROM order_date)::INT AS label,
       COUNT(*) AS orders,
       SUM(total_price) AS revenue
FROM orders
GROUP BY label
ORDER BY label;


Најпродавани продукти,Топ клиенти,Нови регистрации по месец

Најпродавани продукти
Креираме прашалник каде велиме "за секој продукт, пресметај колку вкупно парчиња се продадени
(збир на quantity), сортирај ги и земи ги првите 5" :

SELECT 
  p.product_name AS label,
  SUM(c.quantity) AS total_sold
FROM contains c
JOIN stock s ON c.id_stock = s.id_stock
JOIN products p ON s.id_product = p.id_product
GROUP BY p.product_name
ORDER BY total_sold DESC
LIMIT 5;


Топ клиенти
Креираме прашалник каде велиме "да се пресмета колку трошел секој клиент вкупно,
и да се сортира според таа сума,на крај да ги врати ги првите 5" :

SELECT 
  c.first_name || ' ' || c.last_name AS label,
  SUM(o.total_price) AS total_spent
FROM orders o
JOIN customers c ON o.id_customer = c.id_customer
GROUP BY c.first_name, c.last_name
ORDER BY total_spent DESC
LIMIT 5;


Нови регистрации по месец
Креираме прашалник каде велиме "за секој месец, прикажи колку нови корисници се регистрирале" :

SELECT 
  TO_CHAR(created_at, 'Mon YYYY') AS label,
  COUNT(*) AS new_users
FROM customers
GROUP BY label
ORDER BY MIN(created_at);


Предикција на производи кои наскоро ќе ги снема на залиха

Целта со оваа предикција е да направиме SQL query кое ќе ги излиста производите кои
веројатно ќе останат без залиха до крајот на неделата, врз основа на просечна неделна продажба.
Првин да потенцираме, ова стои само кога админот е најавен на страна Предикција, односно фајловите prediction.html и prediction.js.
Креираме повик до API за предикција на ризична залиха
кое е поставено на app.js како /admin/stock-alerts.
Испраќаме авторизирано GET барање до backend за да добиеме податоци
за сите продукти и нивната состојба.
Ги добиваме сите продукти со следниве карактеристики:
product_name, size, current_stock, avg_weekly_sales, status.
Најпрво ќе бидат производите со најмногу продажба:

data.sort((a, b) => b.avg_weekly_sales - a.avg_weekly_sales);


Рачно правиме категоризација според редослед за јасен преглед:
Првите 3 → ИТНО
Следни 2 → Набљудувај
Останати → Стабилно

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.