我有两个表来访问数据。
1- bulk_prov_master
2- bulk_prov_detail
问题是,我想在Request_stamp和Response_stamp处获取请求的用户数。
users是bulk_prov_detail中的一列,每个请求都有多个用户。
现在我已经编写了一个查询来获取所有请求的请求和响应时间。 (请求可以相同)
查询
select A.request_batch_id, A.request_stamp, A.response_stamp--, count (DISTINCT b.users)
from bpdata.bulk_prov_master A, bpdata.bulk_prov_detail b
where A.request_stamp > to_DATE('01/09/2015 23', 'MM/DD/YYYY HH24') and A.response_stamp< to_DATE('01/11/2015 00', 'MM/DD/YYYY HH24') and A.request_batch_id = b.request_batch_id
我得到了以下回复。
265384 1/10/2015 1/10/2015 5:05:23 AM
265384 1/10/2015 1/10/2015 5:05:23 AM
265384 1/10/2015 1/10/2015 5:05:23 AM
265384 1/10/2015 1/10/2015 5:05:23 AM
265384 1/10/2015 1/10/2015 5:05:23 AM
现在我想要每个时间戳的用户数。
更新 我已经写了另一个查询,这次我得到了以下回复
查询
SELECT To_CHAR( B.response_stamp , 'DD/MM/YYYY HH24') as input, count(A.REQUEST_BATCH_ID), count(DISTINCT A.users)
FROM bpdata.bulk_prov_detail A, bpdata.bulk_prov_master B
where B.response_stamp > to_DATE('01/21/2015 00', 'MM/DD/YYYY HH24') and B.response_stamp< to_DATE('01/22/2015 00', 'MM/DD/YYYY HH24') and A.REQUEST_BATCH_ID = B.REQUEST_BATCH_ID
GROUP BY To_CHAR(B.response_stamp, 'DD/MM/YYYY HH24');
响应
21/01/2015 03 12865 3016
21/01/2015 08 5706 573
21/01/2015 05 1812 182
21/01/2015 04 422 43
21/01/2015 00 8048 2053
现在我收到response_stamp的这个数据,我想要request_time数据中用户相同的response_time数据
以下是我想要的示例数据
request_stamp requests users response_stamp requests users
21/01/2015 03 12865 3016 21/01/2015 05 12865 3016
21/01/2015 08 5706 573 21/01/2015 03 12865 3016
21/01/2015 05 1812 182 21/01/2015 05 12865 3016
21/01/2015 04 422 43 21/01/2015 05 12865 3016
21/01/2015 00 8048 2053 21/01/2015 05 12865 3016
答案 0 :(得分:0)
好的最好方法是使用像
这样的小组select count(*) as requests, A.request_stamp from bpdata.bulk_prov_master A, bpdata.bulk_prov_detail b where A.request_stamp > to_DATE('01/09/2015 23', 'MM/DD/YYYY HH24') and A.response_stamp< to_DATE('01/11/2015 00', 'MM/DD/YYYY HH24') and A.request_batch_id = b.request_batch_id group by A.request_stamp.
如果要计算不同的用户,则必须使用子选择:
select count(*) as requests, stamp, user from (select A.request_batch_id, A.request_stamp as stamp, A.response_stamp-- (DISTINCT b.users) user from bpdata.bulk_prov_master A, bpdata.bulk_prov_detail b where A.request_stamp > to_DATE('01/09/2015 23', 'MM/DD/YYYY HH24') and A.response_stamp< to_DATE('01/11/2015 00', 'MM/DD/YYYY HH24') and A.request_batch_id = b.request_batch_id)