【问题标题】:Can we achieve this if yes then what will the SQL query for same如果是的话,我们能做到这一点,那么 SQL 查询会是什么?
【发布时间】:2018-03-06 13:28:25
【问题描述】:

我有一个包含以下类型数据的表:

+---------+------+--------+
| market  | type | amount |
+---------+------+--------+
| LTCBTC  | SELL |   0.15 |
| XMRBTC  | BUY  |  0.005 |
| DASHBTC | BUY  |  0.002 |
| ADABTC  | BUY  |      7 |
| IOTABTC | BUY  |      1 |
| LTCBTC  | BUY  |   0.17 |
| XRPBTC  | BUY  |     12 |
| ETHBTC  | BUY  |   0.03 |
| BCCBTC  | BUY  |  0.005 |
| ETHBTC  | SELL |  0.124 |
| LTCBTC  | BUY  |   0.02 |
| XMRBTC  | BUY  |  0.004 |
| DASHBTC | BUY  |  0.002 |
| ADABTC  | BUY  |      6 |
| IOTABTC | BUY  |      1 |
| XRPBTC  | BUY  |     10 |
| BCCBTC  | BUY  |  0.004 |
| ETHBTC  | BUY  |  0.025 |
| XMRBTC  | BUY  |  0.006 |
| DASHBTC | BUY  |  0.002 |
| LTCBTC  | BUY  |   0.02 |
| ETHBTC  | SELL |  0.026 |
| ETHBTC  | SELL |  0.004 |
| BCCBTC  | SELL |  0.005 |
| XRPBTC  | SELL |     14 |
+---------+------+--------+

这是关于我到今天为止购买或出售的硬币对的信息。我想为每对找到我持有的硬币的确切数量。

所以基本上我想要以下回应:

+---------+------+----------------------+
| market  | type | sum(amount)          |
+---------+------+----------------------+
| ADABTC  | BUY  |                   13 |
| BCCBTC  | BUY  |        0.00400000019 |
| DASHBTC | BUY  | 0.006000000284984708 |
| ETHBTC  | BUY  |         -0.098999999 |
| IOTABTC | BUY  |                    2 |
| LTCBTC  | BUY  |         0.0599999949 |
| XMRBTC  | BUY  |  0.01500000013038516 |
| XRPBTC  | BUY  |                    8 |
+---------+------+----------------------+

有人可以帮我查询一下吗?

谢谢

【问题讨论】:

  • 改造的逻辑是什么?
  • 你试过什么?说真的,这闻起来像家庭作业,而您自己却没有表现出丝毫的努力。
  • SELECT ..... SUM(amount) ... WHERE type = 'BUY' GROUP BY market, type 应该可以解决问题
  • 你的 sum(amount) 值怎么小于 0 ? (ETHBTC)
  • 实际上,我正在做一个小项目,我需要它,因为我很难弄清楚查询。这是高度判断@UlrichEckhardt

标签: mysql sql database


【解决方案1】:

我想简单的 CASEGROUP BY 应该可以工作

select market,
       sum(case when type = 'sell' then -amount
                when type = 'buy' then amount end)
from data
group by market

【讨论】:

  • 似乎适用于整数,但以 DASHBTC 为例。它的 0.002+0.002+0.002 = 0.006000000284984708
  • 谢谢,@Radim。它有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多