【问题标题】:How to choose unique clients whose payment amount如何选择支付金额的唯一客户
【发布时间】: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 以使代码更清晰 - 适合所有人!
  • 使用该表数据,同时指定预期结果!
  • 但如果“其支付金额”的意思与总和完全一致,则一定有这样的情况
  • 对不起我的坏英语家伙.....

标签: mysql sql


【解决方案1】:

你可以试试下面-

SELECT ID_Client
FROM   `Payment.TotalPayments` 
WHERE  Currency = 'UAH' 
group by id_client having sum(Transum) between 150 AND 400

【讨论】:

  • 但如果“其支付金额”的意思与总和完全一致,则一定有这样的情况
  • @ПашаПетров,您现在可以查看 - 我已经更改了
猜你喜欢
  • 1970-01-01
  • 2021-07-18
  • 2020-07-31
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 2016-08-02
  • 1970-01-01
相关资源
最近更新 更多