簡體   English   中英

sql任務與金額和匯率

[英]sql quest with amount and exchange rate

如果我們考慮到匯率,如何選擇在2018年12月支付了大筆款項的客戶

我有一張桌子:

  • Trandate日期 - 交易日期
  • Transum數字(20,2) - 付款金額
  • CurrencyRate數字(20,2) - 貨幣匯率


 ID_Client  Trandate    Transum CurrencyRate    Currency
 --------------------------------------------------------
 1          2018.12.01  100     1               UAH
 1          2018.12.02  150     2               USD
 2          2018.12.01  200     1               UAH
 3          2018.12.01  250     3               EUR
 3          2018.12.02  300     1               UAH
 3          2018.12.03  350     2               USD
 7          2019.01.08  600     1               UAH

但我認為“最大”根本不是我所需要的

 SELECT ID_Client, MAX(Transum*CurrencyRate) 
 FROM `Payment.TotalPayments` 
 WHERE YEAR(Trandate) = 2018
       AND MONTH(Trandate) = 12

我需要這個東西

ID_Client   Transum 
   3         1750

1750是“UAH”,350USD + 300UAH + 250EUR,美元兌換2,歐元兌換3。

我想你想要sum() 然后你可以order by結果order by

SELECT ID_Client, SUM(Transum*CurrencyRate) as total 
FROM `Payment.TotalPayments` 
WHERE Trandate >= '2018-12-01' AND Transdate < '2019-01-01'
GROUP BY ID_Client
ORDER BY total DESC;

如果您想要獲得2018年和12月份客戶的交易金額總和,您可以這樣寫:

SELECT ID_Client, SUM(Transum*CurrencyRate) as payment_total_converted
FROM `Payment.TotalPayments` 
WHERE YEAR(Trandate) = 2018
and MONTH(Trandate) = 12
group by ID_Client

如果您想要在給定日期范圍內按每個客戶,年和月分組的內容,您可以這樣寫:

SELECT ID_Client, YEAR(Trandate) as tran_year, MONTH(Trandate) as tran_month, 
SUM(Transum*CurrencyRate) as payment_total_converted
FROM `Payment.TotalPayments` 
WHERE Trandate between '2018-12-01' and '2019-01-01'
group by ID_Client, YEAR(Trandate), MONTH(Trandate)

我為您的計算列添加了一個列名,以便結果集仍然是關系的(列需要不同的名稱)。

我建議閱讀SQL'group by'子句( https://www.w3schools.com/sql/sql_groupby.asp )和聚合( https://www.w3schools.com/sql/sql_count_avg_sum.asphttps://www.w3schools.com/sql/sql_min_max.asp )運營商。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM