【发布时间】:2019-05-16 06:59:00
【问题描述】:
如何选择支付金额(UAH)在 150 到 400 UAH 之间的唯一客户?
我有桌子:
• 交易日期-交易日期;
• Transum numeric (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 DISTINCT ID_Client
, Transum
FROM `Payment.TotalPayments`
WHERE Currency = "UAH"
AND Transum >= "150"
AND Transum <= "400"
一定是这样的:
SELECT ID_Client, COUNT(Transum)
FROM `Payment.TotalPayments`
HAVING COUNT(Transum) BETWEEN 150 AND 400
【问题讨论】:
-
如果你想要独特的客户,你不应该选择
Transum。注意DISTINCT适用于 所有 列,括号是多余的且具有误导性。 -
DISTINCT不是一个函数,它是SELECT DISTINCT的一部分,适用于整个选定的行。跳过那些额外的括号,只需写SELECT DISTINCT ID_Client , Transum以使代码更清晰 - 适合所有人! -
使用该表数据,同时指定预期结果!
-
但如果“其支付金额”的意思与总和完全一致,则一定有这样的情况
-
对不起我的坏英语家伙.....