我有原始交易數據,有交易編號和卡號。不幸的是,卡號在交易的每一行都不重複,因此存在空白。我想通過卡號總結數據,所以我需要填補空白(我認爲)。如何處理數據庫原始數據中的空白?
我處理這個問題的方法是創建一個交易號碼和卡號的唯一查找,匹配卡號返回原始數據,然後通過卡號進行彙總。
我已經附上小圖:
任何有助於改善這一過程,將不勝感激。擺脫查找步驟會很好!
我有原始交易數據,有交易編號和卡號。不幸的是,卡號在交易的每一行都不重複,因此存在空白。我想通過卡號總結數據,所以我需要填補空白(我認爲)。如何處理數據庫原始數據中的空白?
我處理這個問題的方法是創建一個交易號碼和卡號的唯一查找,匹配卡號返回原始數據,然後通過卡號進行彙總。
我已經附上小圖:
任何有助於改善這一過程,將不勝感激。擺脫查找步驟會很好!
只是一個,但例如應該工作:
SELECT r.cardId AS `Card Number`,
COUNT(*) AS `# of Transactions`,
SUM(t.sales) AS `Total Sales`
FROM transactions t
JOIN (SELECT transactionId, cardId
FROM transactions
WHERE cardId IS NOT NULL OR
cardId != ''
) AS r
ON r.transactionId = t.transactionId
GROUP BY t.transactionId
基本上就是我做的是:
transactionId
這樣,我們可以很容易地計算分組的結果交易次數和總額的銷售額。cardId
。結果應該是你所描述的。
CARD NUMBER # OF TRANSACTIONS TOTAL SALES
5845 3 141
3957 5 177
對於RAW +匹配結果:
SELECT t.transactionId,
r.cardId,
t.sales
FROM transactions t
JOIN (SELECT transactionId, cardId
FROM transactions
WHERE cardId IS NOT NULL OR
cardId != ''
) AS r
ON r.transactionId = t.transactionId
要更新空的結果,你可以使用一個UPDATE
是這樣的:
UPDATE transactions t
JOIN (SELECT transactionId, cardId
FROM transactions
WHERE cardId IS NOT NULL OR
cardId != ''
) AS m
ON m.transactionId = t.transactionId
SET t.cardId = m.cardId
WHERE t.cardId IS NULL OR
t.cardId = ''
你說「和卡交易號碼的唯一查詢號碼」,但你將在原表的結果既不是這兩件事情 –
你真的在數據庫中工作(如你標記的MySQL)或Excel? – Riz
@scrowler:我的意思是所有交易號碼和相關卡號的列表。在MySQL術語中:選擇Transaction#和Card#,然後按Transaction#和Card#分組。 – Lucas