Amit-kr26's picture
HF Spaces deployment
c9f187d
Raw
History Blame Contribute Delete
1.74 kB
"""Seller performance analytics queries."""
import pandas as pd
from sqlalchemy import Engine, text
def top_sellers_by_revenue(engine: Engine, limit: int = 20) -> pd.DataFrame:
sql = text("""
SELECT
ds.seller_id,
ds.city,
ds.state,
ds.total_orders,
ds.avg_review_score,
ds.on_time_rate,
SUM(f.price + f.freight_value) AS revenue
FROM dim_sellers ds
JOIN fact_orders f ON ds.seller_key = f.seller_key
WHERE f.order_status NOT IN ('canceled', 'unavailable')
GROUP BY ds.seller_id, ds.city, ds.state, ds.total_orders, ds.avg_review_score, ds.on_time_rate
ORDER BY revenue DESC LIMIT :n
""")
with engine.connect() as conn:
return pd.read_sql(sql, conn, params={"n": limit})
def seller_review_distribution(engine: Engine) -> pd.DataFrame:
sql = text("""
SELECT review_score, COUNT(*) AS orders
FROM fact_orders
WHERE review_score IS NOT NULL
GROUP BY 1 ORDER BY 1
""")
with engine.connect() as conn:
return pd.read_sql(sql, conn)
def sellers_with_geo(engine: Engine) -> pd.DataFrame:
sql = text("""
SELECT seller_id, city, state, lat, lng, total_orders, avg_review_score
FROM dim_sellers
WHERE lat IS NOT NULL AND lng IS NOT NULL
""")
with engine.connect() as conn:
return pd.read_sql(sql, conn)
def all_sellers(engine: Engine) -> pd.DataFrame:
sql = text("""
SELECT seller_id, city, state, total_orders, avg_review_score, on_time_rate
FROM dim_sellers
ORDER BY total_orders DESC
""")
with engine.connect() as conn:
return pd.read_sql(sql, conn)