所以我正在為我的應用程式使用 sqlite3 資料庫,并且簡單數學計算的結果是錯誤的,因此我很擔心.. 所以在這里,我必須找到進出庫存的凈流量,并且它們的流量被記錄在兩個單獨的表分別是采購和庫存流出。我按產品 ID 對查詢中的采購和使用(流出)材料進行分組,并從兩個表中添加它們的數量,然后從兩個表中減去添加的數量以獲得左數量該產品或該產品的網路流量,但 sqlite3 資料庫甚至無法做簡單的數學運算,
例如,當產品分別以 8 和 4 兩種不同數量購買時,答案必須為 12,但給出 24;當同一產品以不同數量(如 7 和 4)使用兩次時,答案必須為 11,但給出 22。 .
下面是我寫的 SQL 查詢,用于分別查找每個產品的網路流量,
SELECT p.product_id,
SUM(p.quantity) AS total_inflow,
SUM(s.quantity) AS total_outflow,
SUM(p.quantity) - SUM(s.quantity) AS quantity_left,
s.UOM
FROM purchases p
INNER JOIN stock_out s ON p.product_id = s.product_id
GROUP BY p.product_id, s.product_id
uj5u.com熱心網友回復:
當 in_flow 或 out_flow 或兩者都有不止一行時,另一個數量的 SUM 會因 JOIN 操作而受到影響。
為了解決這個JOIN問題,你可以做這樣的事情,作為一個例子。為了解決 in_flow 和沒有 out_flow 的情況,并且我們也想顯示這些結果,我們可以為此使用外連接(進行了調整)。
如果有可能出現 out_flow 而沒有相應的 in_flow,我們可以使用 FULL OUTER JOIN。我懷疑在這種情況下可能沒有必要。
WITH in_flow AS (
SELECT product_id, SUM(quantity) AS total_inflow
FROM purchases
GROUP BY product_id
)
, out_flow AS (
SELECT product_id, SUM(quantity) AS total_outflow
FROM stock_out
GROUP BY product_id
)
SELECT in_flow.product_id
, total_inflow, COALESCE(total_outflow, 0) AS total_outflow
, total_inflow - COALESCE(total_outflow, 0) AS remaining
FROM in_flow
LEFT JOIN out_flow
ON in_flow.product_id = out_flow.product_id
;
uj5u.com熱心網友回復:
在 2 個表中分別聚合并UNION ALL用于結果。
然后再次聚合:
SELECT product_id,
SUM(total_inflow) AS total_inflow,
SUM(total_outflow) AS total_outflow,
SUM(total_inflow) - SUM(total_outflow) AS quantity_left
FROM (
SELECT product_id, SUM(quantity) AS total_inflow, 0 AS total_outflow
FROM purchases
GROUP BY product_id
UNION ALL
SELECT product_id, 0, SUM(quantity)
FROM stock_out
GROUP BY product_id
)
GROUP BY product_id;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/394743.html
上一篇:在貓鼬的嵌套陣列中添加元素
