我有3个表:order
,order_transaction
和order_history
。
在order
中,仅保存了一个订单项以及order_id
。
在order_history
中,我保存了按该顺序发生的所有交易,例如orderAccepted
,orderInProgress
(这是该顺序的事件)。
在order_transaction
中保存所有与交易相关的详细信息。两个表transaction_id
和order_transaction
中的order_history
保持不变。
content of tables are
order
id
created by
created_date
client type
type
qty
price
order_history
id
order_id
transaction_id
events
created_date
order_transaction
id
order_id
transaction_id
qty
price
status
有一个事件,客户可以在该事件中恢复名为orderProccessedReverted
的订单,但不能一go而就。例如,如果有一个数量为1000的订单,然后将其还原,则将其拆分为10个不同的条目,其中order_id
将保持不变,但交易将发生变化,并且该条目将同时出现在两个order_transaction
中和order_history
表。
两个表中的条目示例为:
order_history
id order_id transaction_id events created_date
001 1111 345 orderProccessedReverted 20-08-19
002 1111 346 orderProccessedReverted 20-08-19
003 1111 347 orderProccessedReverted 20-08-19
order_transaction
id order_id transaction_id qty created_date
011 1111 345 100 20-08-19
012 1111 346 100 20-08-19
013 1111 347 100 20-08-19
现在,我正在生成一个报告,其中需要所有已还原的订单。以下是报告列:
order_id created_by client_type transaction_id qty status events created_date
111 user1 type1 444 100 reverted orderProccessedReverted 20-08-19
111 user1 type1 445 100 reverted orderProccessedReverted 20-08-19
111 user1 type1 446 100 reverted orderProccessedReverted 20-08-19
111 user1 type1 447 100 reverted orderProccessedReverted 20-08-19
112 user2 type2 551 50 reverted orderProccessedReverted 20-08-19
112 user2 type2 552 50 reverted orderProccessedReverted 20-08-19
112 user2 type2 553 50 reverted orderProccessedReverted 20-08-19
我尝试进行左联接和普通联接,但是记录重复。
我尝试了以下查询:
select * from
order_history orderHist,
order_transaction tr,
order ord
where
ord.id = tr.order_id
AND tr.order_id = orderhist.order_id
AND tr.transaction_id = orderhist.transaction_id
AND orderhist.event= 'orderProccessedReverted'
AND tr.status = 'REVERTED'
AND ord.tradedate='20190820';
答案 0 :(得分:0)
尝试这一步,我创建了带有伪数据和几列的列,可以在select中添加更多列。
result <- df.ex %>% group_by(id_1) %>% summarise(count_distinct_values = count(distinct(., days)))