【发布时间】:2020-07-25 23:03:33
【问题描述】:
我对SQL有基本的了解,(不擅长JOINS), 所以这是我正在编写一个脚本的交易,我想在其中获取最近交易状态的总数。
即在一天结束时,状态计数是多少,有多少购买、出售、支付等。
例如:
transaction_reference status time_stamp
123av buy 2020-07-23 06:06:17
123av sell 2020-07-23 06:06:18
124av buy 2020-07-23 06:06:23
124av sell 2020-07-23 06:06:38
125cv buy 2020-07-23 06:06:24
125av buy 2020-07-23 06:06:14
125ad paid 2020-07-23 06:06:14
我有一个查询来获取每笔交易的最后状态,
SELECT
count(DISTINCT transaction_reference),transaction_reference, MAX(time_stamp),status
FROM
transactiontable
WHERE
time_stamp >= '2020-07-23 06:00:00' and time_stamp <= '2020-07-23 16:00:00'
GROUP BY
transaction_reference;
因此我得到的结果如下:
transaction_reference status time_stamp
123av sell 2020-07-23 06:06:18
124av sell 2020-07-23 06:06:38
125cv buy 2020-07-23 06:06:24
125av buy 2020-07-23 06:06:14
125ad paid 2020-07-23 06:06:14
此结果为我提供了每个 transaction_reference 的最新状态, 现在我想计算状态, *status 除了买入和卖出之外,还有其他价值。
这是所需的输出:
状态计数 买 2 卖 3 支付 1
由于我在“JOIN”方面很弱, 我的第一个解决方案是将其放入临时表中,然后按命令运行组。
其他是使用内连接。
如果这可以通过使用连接来完成,谁能告诉我怎么做?
或者简单来说,我可以在查询上运行查询,
喜欢
Select count(*),C from table1
where
(select * from table1 where a='12')
group by C;
【问题讨论】:
-
您的第一个查询已损坏。
select和group by在他们选择的列中不一致。 -
@GordonLinoff 我认为 mysql 在这种情况下只是自动最大值
-
@Hogan。 . .实际上,它没有,并且被记录为危险。您对 SQLite 的看法是正确的——尽管那里也应该避免这种结构。
-
嗨,这不是坏的,
-
@GordonLinoff -- 我并没有为它辩护 -- 很明显,它让这个用户做这种类型的构造增加了他们的困惑