[英]How to use distinct and count with partition by
I want rows with distinct agt_id along with the count.我想要具有不同 agt_id 的行以及计数。 Following is the query i am currently using but need help to get distinct rows.
以下是我目前正在使用的查询,但需要帮助才能获得不同的行。
with cust as
(
SELECT customer_id, cnic
FROM customer
where customer_id
not in
(select agent_id from agent
where to_date(created_on) BETWEEN '2020-06-01' AND '2020-06-30')
)
select agt.agent_id, c.customer_id, c.cnic, agt.transaction_type_id,
agt.transaction_type_name , row_number() OVER(PARTITION BY c.customer_id) AS agent_count
from cust as c
INNER JOIN konnect_ag_transaction_vw agt ON c.cnic= agt.receiver_cnic
where
agt.status ='PROCESSED'
AND agt.transaction_type_id IN (1,2,3)
Current Output using above query:当前 Output 使用上述查询:
agt_id cus_id Count
1 89563 93587 7
2 89563 93587 7
3 89563 93587 7
4 89563 93587 7
5 89563 93587 7
6 56139 93587 7
7 56139 93587 7
Count in the above output is the total count of rows with same cus_id where as i want count of agt_id link with same cus_id上面output中的计数是具有相同 cus_id 的行的总数,其中我想要具有相同 cus_id 的 agt_id 链接计数
Desired output:所需的 output:
agt_id cus_id Count
1 89563 93587 2
2 56139 93587 2
If I understand correctly you need a simple group by with count()如果我理解正确,您需要一个简单的 group by with count()
with cust as
(
SELECT customer_id, cnic
FROM konnect_bb_customer_vw
where customer_id
not in
(select agent_id from konnect_bb_agent_h_vw
where to_date(created_on) BETWEEN '2020-06-01' AND '2020-06-30')
)
select agt.agent_id, c.customer_id, count(*)
from cust as c
INNER JOIN konnect_ag_transaction_vw agt ON c.cnic= agt.receiver_cnic
where agt.status ='PROCESSED' AND agt.transaction_type_id IN (1,2,3)
group by agt.agent_id, c.customer_id
I suspect that you want aggregation:我怀疑你想要聚合:
select agt.agent_id, c.customer_id, count(*)
from cust c join
konnect_ag_transaction_vw agt
on c.cnic = agt.receiver_cnic
where agt.status = 'PROCESSED' and
agt.transaction_type_id in (1, 2, 3)
group by agt.agent_id, c.customer_id;
using DISTINCT keyword as such使用 DISTINCT 关键字
select DISTINCT agt.agent_id, c.customer_id, c.cnic, agt.transaction_type_id,
agt.transaction_type_name , row_number() OVER(PARTITION BY c.customer_id) AS agent_count
from cust as c
INNER JOIN konnect_ag_transaction_vw agt ON c.cnic= agt.receiver_cnic
where
agt.status ='PROCESSED'
AND agt.transaction_type_id IN (1,2,3)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.