我在MySQL中有一個包含以下字段的表:date,Value,Type。MySQL中兩個系列的區別
類型可以是出口或進口。我想要一個查詢來返回每個月的貿易赤字(出口 - 進口)。這可能與一個單一的查詢?
我在MySQL中有一個包含以下字段的表:date,Value,Type。MySQL中兩個系列的區別
類型可以是出口或進口。我想要一個查詢來返回每個月的貿易赤字(出口 - 進口)。這可能與一個單一的查詢?
我不認爲你可以在一個查詢中做到這一點,因爲你需要2個不同的WHERE子句。
可以檢索與下面的查詢出口:
SELECT SUM(VALUE) FROM table WHERE MONTH(date) = month AND YEAR(date) = year AND Type = 'exports'
你可以用下面的查詢檢索進口:
SELECT SUM(VALUE) FROM table WHERE MONTH(date) = month AND YEAR(date) = year AND Type = 'imports'
這是假定值是一個數字字段和日期是DATETIME或DATE字段。
對不起,在一行上的SQL,但我不知道如何在代碼示例中換行。
您應該將日期存儲爲單獨的列中的年/月/日,或者通過某種方式輕鬆鏈接到允許您執行的表格,否則您必須對每個date
列執行緩慢的計算,以計算月。我會留下它,因爲你現在已經知道了,但我會建議以不同的方式存儲日期,以便使計算變得更加容易(如果你只按月分組,那麼存儲EXTRACT(YEAR_MONTH FROM date)
結果的額外列會使它更快。總體
假設「價值」是某種形式的數字:
SELECT
EXTRACT(YEAR_MONTH FROM date) AS month,
SUM(
CASE Type
WHEN 'export' THEN Value
ELSE -1 * Value
END
) AS trade_deficit
FROM
mytable
GROUP BY
EXTRACT(YEAR_MONTH FROM date)
(我沒有測試過這一點,可能有一些語法mixups,但它應該工作)
什麼類型數據進入「價值」列? – gurun8 2010-05-17 00:51:20