| 1 | == Напредни извештаи од базата (SQL и складирани процедури) |
| 2 | = Неделен,Месечен,Годишен извештај |
| 3 | '''Weekly''' \\ |
| 4 | Креираме прашалник каде велиме "за секој ден од неделата во последни 7 дена,\\ прикажи број нарачки и вкупен приход" : \\ |
| 5 | \\ |
| 6 | {{{#!sql |
| 7 | SELECT TO_CHAR(order_date, 'Dy') AS label, |
| 8 | COUNT(*) AS orders, |
| 9 | SUM(total_price) AS revenue |
| 10 | FROM orders |
| 11 | WHERE order_date >= NOW() - INTERVAL '7 days' |
| 12 | GROUP BY label |
| 13 | ORDER BY MIN(order_date); |
| 14 | }}} |
| 15 | \\ |
| 16 | |
| 17 | '''Monthly''' \\ |
| 18 | Креираме прашалник каде велиме "за секој месец, преброј ги нарачките и пресметај вкупен приход" : \\ |
| 19 | \\ |
| 20 | {{{#!sql |
| 21 | SELECT TO_CHAR(order_date, 'Mon') AS label, |
| 22 | COUNT(*) AS orders, |
| 23 | SUM(total_price) AS revenue |
| 24 | FROM orders |
| 25 | GROUP BY label |
| 26 | ORDER BY MIN(order_date); |
| 27 | }}} |
| 28 | \\ |
| 29 | |
| 30 | '''Yearly''' \\ |
| 31 | Креираме прашалник каде велиме "за секоја година, прикажи колку нарачки имало и колку приход е остварено" : \\ |
| 32 | \\ |
| 33 | {{{#!sql |
| 34 | SELECT EXTRACT(YEAR FROM order_date)::INT AS label, |
| 35 | COUNT(*) AS orders, |
| 36 | SUM(total_price) AS revenue |
| 37 | FROM orders |
| 38 | GROUP BY label |
| 39 | ORDER BY label; |
| 40 | }}} |
| 41 | \\ |
| 42 | |
| 43 | = Најпродавани продукти,Топ клиенти,Нови регистрации по месец |
| 44 | '''Најпродавани продукти''' \\ |
| 45 | Креираме прашалник каде велиме "за секој продукт, пресметај колку вкупно парчиња се продадени \\ |
| 46 | (збир на quantity), сортирај ги и земи ги првите 5" : \\ |
| 47 | \\ |
| 48 | {{{#!sql |
| 49 | SELECT |
| 50 | p.product_name AS label, |
| 51 | SUM(c.quantity) AS total_sold |
| 52 | FROM contains c |
| 53 | JOIN stock s ON c.id_stock = s.id_stock |
| 54 | JOIN products p ON s.id_product = p.id_product |
| 55 | GROUP BY p.product_name |
| 56 | ORDER BY total_sold DESC |
| 57 | LIMIT 5; |
| 58 | }}} |
| 59 | \\ |
| 60 | '''Топ клиенти''' \\ |
| 61 | Креираме прашалник каде велиме "да се пресмета колку трошел секој клиент вкупно,\\ |
| 62 | и да се сортира според таа сума,на крај да ги врати ги првите 5" : \\ |
| 63 | \\ |
| 64 | {{{#!sql |
| 65 | SELECT |
| 66 | c.first_name || ' ' || c.last_name AS label, |
| 67 | SUM(o.total_price) AS total_spent |
| 68 | FROM orders o |
| 69 | JOIN customers c ON o.id_customer = c.id_customer |
| 70 | GROUP BY c.first_name, c.last_name |
| 71 | ORDER BY total_spent DESC |
| 72 | LIMIT 5; |
| 73 | }}} |
| 74 | \\ |
| 75 | '''Нови регистрации по месец''' \\ |
| 76 | Креираме прашалник каде велиме "за секој месец, прикажи колку нови корисници се регистрирале" : \\ |
| 77 | \\ |
| 78 | {{{#!sql |
| 79 | SELECT |
| 80 | TO_CHAR(created_at, 'Mon YYYY') AS label, |
| 81 | COUNT(*) AS new_users |
| 82 | FROM customers |
| 83 | GROUP BY label |
| 84 | ORDER BY MIN(created_at); |
| 85 | }}} |
| 86 | \\ |