My query:
SELECT
c.CustID,
o.OrderID,
SUM(ol.Qty * ol.Price) AS SUMOrder,
AVG(SUM(ol.Qty * ol.Price)) OVER (PARTITION BY c.CustID) AS AVGAllOrders,
COUNT(*) AS Countorders,
SUM(SUM(ol.Qty * ol.Price)) OVER (PARTITION BY c.CustID) AS SumAllOrders
FROM
Customer c
LEFT JOIN
[Order] o ON o.CustID c.CustID
LEFT JOIN
OrderLine ol ON ol.OrderID = o.OrderID
GROUP BY
c.CustID, o.OrderID
AVG and SUM calculations need more depth. Besides calculating it over CustID I need to calculate it over 2 periods. So first half year and second half year. Is that possible with PARTITION BY?
Customer:
| CustID | Name |
|---|---|
| 10073 | Test |
| 10074 | Test2 |
Order:
| OrderID | CustID | OrderDate&Time |
|---|---|---|
| VOR0060751 | 10073 | 2025-05-07 00:00:00.000 |
| VOR0061499 | 10073 | 2025-06-04 00:00:00.000 |
| VOR0061918 | 10073 | 2025-06-18 00:00:00.000 |
| VOR0052554 | 10073 | 2024-07-17 00:00:00.000 |
OrderLine:
| orderid | Orderline | OrderSubline | Qty | Price |
|---|---|---|---|---|
| VOR0060751 | 010 | 000 | 1.000 | 15.60 |
| VOR0060751 | 010 | 005 | 1.000 | 12.27 |
| VOR0060751 | 020 | 000 | 1.000 | 18.19 |
| VOR0060751 | 020 | 005 | 1.000 | 14.07 |
| VOR0060751 | 030 | 000 | 1.000 | 16.19 |
| VOR0060751 | 030 | 005 | 1.000 | 8.87 |
| VOR0060751 | 040 | 000 | 1.000 | 20.53 |
| VOR0060751 | 040 | 005 | 1.000 | 18.01 |
| VOR0060751 | 050 | 000 | 1.000 | 23.49 |
| VOR0060751 | 050 | 005 | 1.000 | 14.07 |
| VOR0061499 | 010 | 000 | 1.000 | 8.88 |
| VOR0061499 | 020 | 000 | 1.000 | 12.12 |
| VOR0061499 | 020 | 005 | 1.000 | 21.27 |
| VOR0061499 | 030 | 000 | 4.000 | 16.68 |
| VOR0061499 | 040 | 000 | 1.000 | 16.68 |
| VOR0061499 | 050 | 000 | 1.000 | 10.35 |
| VOR0061499 | 050 | 005 | 1.000 | 6.29 |
| VOR0061499 | 060 | 000 | 1.000 | 10.35 |
| VOR0061499 | 060 | 005 | 1.000 | 8.36 |
| VOR0061499 | 070 | 000 | 2.000 | 14.29 |
| VOR0061499 | 070 | 005 | 2.000 | 8.87 |
| VOR0061499 | 080 | 000 | 2.000 | 15.60 |
| VOR0061499 | 080 | 005 | 2.000 | 10.23 |
| VOR0061499 | 090 | 000 | 2.000 | 18.19 |
| VOR0061499 | 090 | 005 | 2.000 | 17.10 |
| VOR0061499 | 100 | 000 | 1.000 | 18.19 |
| VOR0061499 | 100 | 005 | 1.000 | 18.01 |
| VOR0061499 | 110 | 000 | 1.000 | 0.00 |
| VOR0061499 | 120 | 000 | 1.000 | 20.53 |
| VOR0061499 | 120 | 005 | 1.000 | 18.01 |
| VOR0061499 | 130 | 000 | 1.000 | 16.19 |
| VOR0061499 | 130 | 005 | 1.000 | 10.23 |
| VOR0061499 | 140 | 000 | 4.000 | 20.53 |
| VOR0061499 | 140 | 005 | 4.000 | 14.07 |
| VOR0061499 | 150 | 000 | 2.000 | 0.00 |
| VOR0061499 | 160 | 000 | 2.000 | 28.00 |
| VOR0061499 | 160 | 005 | 2.000 | 38.45 |
| VOR0061918 | 010 | 000 | 1.000 | 6.58 |
| VOR0061918 | 010 | 005 | 1.000 | 6.07 |
| VOR0061918 | 020 | 000 | 1.000 | 6.58 |
| VOR0061918 | 020 | 005 | 1.000 | 6.07 |
| VOR0061918 | 030 | 000 | 1.000 | 0.00 |
| VOR0061918 | 040 | 000 | 2.000 | 10.35 |
| VOR0061918 | 040 | 005 | 2.000 | 8.36 |
| VOR0061918 | 050 | 000 | 1.000 | 14.29 |
| VOR0061918 | 050 | 005 | 1.000 | 8.87 |
| VOR0061918 | 060 | 000 | 1.000 | 15.60 |
| VOR0061918 | 060 | 005 | 1.000 | 10.23 |
| VOR0061918 | 070 | 000 | 1.000 | 18.19 |
| VOR0061918 | 070 | 005 | 1.000 | 17.10 |
| VOR0061918 | 080 | 000 | 2.000 | 16.19 |
| VOR0061918 | 080 | 005 | 2.000 | 8.36 |
| VOR0061918 | 090 | 000 | 2.000 | 20.53 |
| VOR0061918 | 090 | 005 | 2.000 | 14.07 |
| VOR0061918 | 100 | 000 | 2.000 | 20.53 |
| VOR0061918 | 100 | 005 | 2.000 | 18.01 |
| VOR0061918 | 105 | 000 | 1.000 | 0.00 |
| VOR0061918 | 110 | 000 | 1.000 | 23.49 |
| VOR0061918 | 110 | 005 | 1.000 | 14.07 |
| VOR0052554 | 010 | 000 | 2.000 | 14.23 |
Desired result:
| Custid | OrderID | SUMOrder | AVGAllOrders LHY | Countorders LHY | SumAllOrders LHY | AVGAllOrders LHY2 | Countorders LHY2 | SumAllOrders LHY2 |
|---|---|---|---|---|---|---|---|---|
| 10073 | VOR0060751 | 161.29000 | 414.42333 | 3 | 1243.27000 | 0.00000 | 0 | 0.00 |
| 10073 | VOR0061499 | 702.04000 | 414.42333 | 3 | 1243.27000 | 0.00000 | 0 | 0.00 |
| 10073 | VOR0061918 | 318.19000 | 414.42333 | 3 | 1243.27000 | 0.00000 | 0 | 0.00 |
| 10073 | VOR0052554 | 28.46000 | 414.42333 | 3 | 1243.27000 | 28.46000 | 1 | 28.46000 |