Essential SQL Queries for Sales
Customer & Orders
- List all orders for a customer:
SELECT OrderID, CustomerID, OrderDate, TotalAmount
FROM Orders
WHERE CustomerID = 101;
- Top 10 customers by sales:
SELECT CustomerID, SUM(TotalAmount) AS TotalSales
FROM Orders
GROUP BY CustomerID
ORDER BY TotalSales DESC
LIMIT 10;
SELECT Region, COUNT(OrderID) AS OrderCount
FROM Orders
GROUP BY Region;
Revenue Analysis
SELECT YEAR(OrderDate) AS Year, MONTH(OrderDate) AS Month,
SUM(TotalAmount) AS MonthlyRevenue
FROM Orders
GROUP BY YEAR(OrderDate), MONTH(OrderDate)
ORDER BY Year, Month;
- Revenue by product category:
SELECT Category, SUM(TotalAmount) AS Revenue
FROM Orders o
JOIN Products p ON o.ProductID = p.ProductID
GROUP BY Category;
SELECT YEAR(OrderDate) AS Year,
SUM(TotalAmount) AS Revenue,
LAG(SUM(TotalAmount)) OVER (ORDER BY YEAR(OrderDate)) AS PrevYearRevenue,
(SUM(TotalAmount) - LAG(SUM(TotalAmount)) OVER (ORDER BY YEAR(OrderDate))) * 100.0 /
LAG(SUM(TotalAmount)) OVER (ORDER BY YEAR(OrderDate)) AS GrowthRate
FROM Orders
GROUP BY YEAR(OrderDate);
Sales Performance
SELECT SalesPersonID, SUM(TotalAmount) AS SalesTotal
FROM Orders
GROUP BY SalesPersonID;
- Average order value (AOV):
SELECT AVG(TotalAmount) AS AvgOrderValue
FROM Orders;
- Conversion rate (quotes → orders):
SELECT COUNT(DISTINCT OrderID) * 100.0 / COUNT(DISTINCT QuoteID) AS ConversionRate
FROM Quotes q
LEFT JOIN Orders o ON q.QuoteID = o.QuoteID;
Operational Sales Insights
SELECT OrderID, DeliveryStatus
FROM Orders
WHERE DeliveryStatus = 'Pending';
SELECT ProductID,
SUM(CASE WHEN ReturnFlag = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS ReturnRate
FROM OrderDetails
GROUP BY ProductID;
Key Notes
- Indexes: Use on
CustomerID, OrderDate, and ProductID for performance.
- Dashboards: These queries feed into KPIs like revenue growth, AOV, conversion rate.
- Compliance: Always anonymize customer data when sharing outside the organization.
Comments
Post a Comment