我目前正在研究具有 2 個資料表、運算子和順序的 PostgreSQL。
每個操作員執行一個訂單,這將創建一個帶有名稱、日期和操作員 ID 的新訂單。
我想顯示,對于至少有一個訂單的每一天,所有運營商完成的訂單總數以及我輸入 id 的特定運營商的訂單數量。
我實際上在做:
SELECT TO_DATE(Order.order_end_date, 'DD/MM/YYYY') as orderDate,
COUNT(Order.order_index) AS totalOrders
FROM Order
LEFT JOIN Operator ON Order.op_id = Operator.operator_id
AND TO_DATE(order_end_date, 'DD/MM/YYYY') BETWEEN '01/10/2021' AND '22/10/2021'
group by orderDate
ORDER BY orderDate ASC
這會顯示每天所有操作員完成的訂單總數:
2021-10-15 | 3
2021-10-16 | 2
2021-10-18 | 4
我希望能夠將操作員完成的訂單數量放在第三列中,operator_id = 6
2021-10-15 | 3 | 0
2021-10-16 | 2 | 2
2021-10-18 | 4 | 1
uj5u.com熱心網友回復:
您可以使用以下FILTER條款:
count(*) filter (where Order.op_id = 6)
這只會計算運算式產生真值的行。
或者,您可以使用CASE:
count(case when op_id = 6 then 1 end)
這依賴于COUNT僅計算非 NULL 值的事實,默認值CASE是NULL沒有WHEN匹配的子句。
uj5u.com熱心網友回復:
SELECT TO_DATE(Order.order_end_date, 'DD/MM/YYYY') as orderDate,
COUNT(Order.order_index) AS totalOrders,
SUM(CASE WHEN Order.op_id = 6 THEN 1 ELSE 0 END) AS totalOrdersOperator6
FROM Order
WHERE TO_DATE(Order.order_end_date, 'DD/MM/YYYY') BETWEEN '01/10/2021' AND '22/10/2021'
group by orderDate
ORDER BY orderDate ASC
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331621.html
標籤:sql PostgreSQL
