在MySQL中,有時我們需要對數據進行匯總,這時候就可以使用SUM函數了。SUM函數能夠對指定列或行進行加總。但是,有時候數據中可能會有重復的記錄,此時如果不做處理,SUM函數的結果就會不準確,因為它會將重復的記錄也進行加總。下面我們就來看一下如何處理重復的記錄。
假設我們有一個名為orders的表,其中包含了顧客訂單的數據。我們想要計算所有訂單的總金額,可以使用如下語句: SELECT SUM(price) FROM orders; 但是,如果我們的數據中存在重復記錄,那么上面的語句就會把重復的記錄也計算進去。比如說,我們有如下數據: id customer price 1 Alice 50 2 Bob 30 3 Alice 70 4 Bob 40 5 Charlie 20 我們可以看到,Alice和Bob都有多個訂單,如果直接使用SUM函數,結果會算重復的訂單。為了避免這種情況,我們可以使用DISTINCT關鍵字,它可以對查詢結果進行去重。所以,我們可以改為以下查詢語句: SELECT SUM(DISTINCT price) FROM orders; 這樣,我們就可以避免重復記錄對結果的影響了。
但是,需要注意的是,DISTINCT關鍵字會對所有列進行去重,而不僅僅是指定的列。如果我們只想對某一列進行去重,可以使用如下語句:
SELECT SUM(price) FROM (SELECT DISTINCT price FROM orders) AS subquery; 這樣,我們就先對價格進行去重,然后再對去重后的結果進行加總,就能得到不重復訂單的總金額了。