wiki:DatabaseProgramming

Version 1 (modified by 232026, 6 hours ago) ( diff )

--

Views:

  1. order_store_details

CREATE OR REPLACE VIEW order_store_details AS SELECT

o.order_id, o.customer_id, o.order_date, o.total_price, o.status, si.store_instance_id, si.address_id AS store_address, s.store_name AS store_name, s.store_type_id AS store_type, si.instance_name AS instance_name

FROM "Order" o JOIN StoreInstance si ON o.store_instance_id = si.store_instance_id JOIN Store s ON si.store_id = s.store_id; Овој поглед ги прикажува сите нарачки направени во историјата на апликацијата. Ја гледа само табелата Order без никакви joinovi.

2.available_stores_list CREATE VIEW available_stores_list AS SELECT

s.store_id, s.store_name AS store_name, s.store_type_id store_type, si.instance_name instance_name, si.store_instance_id, si.address_id AS store_location

FROM Store s JOIN StoreInstance si ON s.store_id = si.store_id; Овој поглед е наменет за корисничкиот интерфејс за да види корисникот од кои продавници може да направи нарачка. Има JOIN помеѓу Store и StoreInstance

3.driver_performance_metrics CREATE OR REPLACE VIEW driver_performance_metrics AS SELECT

d.driver_id, u.name, u.surname, vt.vehicle_type, ROUND(AVG(r.rating), 2) AS average_rating, COUNT(dr.review_id) AS total_reviews

FROM Driver d JOIN "User" u ON d.driver_id = u.user_id JOIN Vehicle v ON d.vehicle_id = v.vehicle_id JOIN VehicleType vt ON v.vehicle_type_id = vt.vehicle_type_id JOIN Delivery_review dr ON d.driver_id = dr.driver_id JOIN Review r ON dr.review_id = r.review_id GROUP BY d.driver_id, u.name, u.surname, vt.vehicle_type; Овој поглед е наменет за менаџментот и за следење на квалитетот на работа на возачите. Врз основа на просечниот рејтинг и бројот на рецензии добиени од корисниците, системот автоматски може да пресметува бонуси за брзина и љубезност или да ги суспендира возачите со лоши перформанси.

4.store_performance_metrics CREATE VIEW store_performance_metrics AS SELECT

si.store_instance_id, s.store_name AS brand_name, si.address_id AS store_address, ROUND(AVG(r.rating), 2) AS average_product_rating, COUNT(pr.review_id) AS total_product_reviews

FROM StoreInstance si JOIN Store s ON si.store_id = s.store_id JOIN Products_review pr ON si.store_instance_id = pr.store_instance_id JOIN Review r ON pr.review_id = r.review_id GROUP BY si.store_instance_id, s.store_name, si.address_id; Служи за аналитика на партнерските продавници и ресторани, овозможувајќи им на сопствениците да видат како се оценети нивните локали и продукти од страна на купувачите. Овие податоци помагаат за рангирање на продавниците (на пример, „Најдобро оценети“) на самата платформа за достава.

5.customer_order_history_summary CREATE VIEW customer_order_history_summary AS SELECT

u.user_id as customer_id, u.name, u.surname, COUNT(o.order_id) as total_orders, SUM(o.total_price) as total_spent, ROUND(AVG(o.total_price), 2) as average_order_value, MAX(p.payment_date) as last_order_date

FROM "User" u JOIN Customer c ON u.user_id = c.customer_id LEFT JOIN "Order" o ON c.customer_id = o.customer_id LEFT JOIN Payment p ON o.order_id = p.order_id GROUP BY u.user_id, u.name, u.surname; Оваа логика се користи во профилот на корисникот (User Profile) за да му ја прикаже неговата историја на купување, но уште поважно, се користи за маркетинг и лојалност програми. Маркетингот го користи за да идентификува VIP корисници (кои потрошиле најмногу) и да им прати таргетирани купони со попусти.

6.top_trending_products_weekly CREATE OR REPLACE VIEW top_trending_products_weekly AS SELECT

pr.product_id, pr.name as product_name, s.store_name, SUM(oi.quantity) as total_sold, COUNT(DISTINCT o.order_id) as appearing_in_orders

FROM "Order" o JOIN OrderItem oi ON o.order_id = oi.order_id JOIN Product pr ON oi.product_id = pr.product_id JOIN Store s ON pr.store_id = s.store_id ct_id, pr.name, s.store_name ORDER BY total_sold DESC LIMIT 20; Директно ја имплементира бизнис секцијата „Најпродавани / Трендинг продукти“ на главниот екран. Со пребројување на количините во милионската табела OrderItem, системот знае кои 20 продукти се хит неделава и автоматски ги турка напред во апликацијата за да ја зголеми продажбата.

7.delivery_performance_by_city CREATE OR REPLACE VIEW delivery_performance_by_city AS SELECT

c.city_name, COUNT(o.order_id) AS total_orders_delivered, SUM(o.delivery_fee) AS total_delivery_revenue, ROUND(AVG(o.delivery_fee), 2) AS avg_delivery_fee_per_order, COUNT(DISTINCT o.driver_id) AS active_drivers_in_city, ROUND(AVG(o.delivery_fee::numeric / NULLIF(o.total_price, 0) * 100), 2) AS delivery_cost_percentage

FROM City c JOIN DeliveryZone dz ON c.city_id = dz.city_id JOIN "Order" o ON dz.zone_id = o.delivery_zone_id WHERE o.status = 'delivered' -- Ги земаме само успешните достави GROUP BY c.city_name ORDER BY total_orders_delivered DESC; Ова е суштински поглед за стратешко планирање и ширење на бизнисот. Менаџментот гледа во кои градови има најголем профит од достава, колку се активни возачите таму и кој е процентот на заработка од самата такса за достава, со цел да знаат каде да инвестираат во нови маркетинг кампањи.

8.order_counts_by_payment_type CREATE VIEW order_counts_by_payment_type AS SELECT

pm.payment AS payment_type, COUNT(o.order_id) AS total_orders, SUM(o.total_price) AS total_revenue

FROM "Order" o JOIN Payment p ON o.order_id = p.order_id JOIN Payment_method pm ON p.payment_method_id = pm.payment_method_id WHERE o.status = 'delivered' GROUP BY pm.payment ORDER BY total_orders DESC; Се користи од страна на финансискиот сектор за следење на преференциите за плаќање (картичка, во готово, крипто итн.). Логиката помага да се анализира каде има најголем проток на кеш и дали треба да се оптимизираат договорите со банките за провизиите од картички.

9.products_with_store CREATE or replace VIEW products_with_store AS SELECT

pr.product_id, pr.name AS product_name, pr.price, pr.store_id, s.store_name

FROM Product pr JOIN Store s ON pr.store_id = s.store_id; Овој поглед е примарен за пребарувачот (Search Bar) и менијата на рестораните во апликацијата. Овозможува кога корисникот пребарува одреден продукт (на пример: „бургер“), веднаш до името и цената на продуктот да се прикаже и името на брендот/ресторанот кој го нуди тој продукт.

Note: See TracWiki for help on using the wiki.