| | 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 | \\ |