我对sql有一个基本的了解(不擅长连接),所以我要写一个脚本,在这个脚本中我想得到事务的最近状态的总数。
i、 在一天结束时,状态的计数是多少,买了多少,卖了多少,付了多少,等等。
例如:
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
这个结果给了我每个交易的最新状态\参考,现在我要计算状态,*状态除了买入和卖出还有其他值。
这是所需的输出:
状态计数买2卖3付1
因为我在“join”方面很弱,所以我的第一个解决方案是将其放入临时表中,然后通过命令运行组。
另一种是使用内部连接。
如果这可以通过使用连接来实现,有人能告诉我怎么做吗?
或者简单地说,我可以运行query-on-query,
喜欢
Select count(*),C from table1
where
(select * from table1 where a='12')
group by C;
4条答案
按热度按时间mwg9r5ms1#
也只是按状态分组。。。这样地:
现在您将获得每个状态类型的一行以及这些类型的计数
要获取每个状态的计数,请执行以下操作:
基于另一组得到计数的方法是使用sum——如下所示:
pxy2qtax2#
您可以使用时间比较和相关子查询获取每天的最后状态:
要获取状态分布,请聚合:
为了提高性能,您需要一个索引
BARCLAYS_TRANSACTION(transaction_reference, time_stamp)
.yi0zb3m43#
正在使用您的查询:
Package 如下:
8hhllhi24#
所以我花了2个小时学习加入,现在,这是工作100%。
记录是否有人认为这是有用的。
这给了我确切的数字。