基于Teradata SQL中另一列的最大值查找列的计数
表A有三列:基于Teradata SQL中另一列的最大值查找列的计数,sql,teradata,Sql,Teradata,表A有三列:Dates、A\u ID和B\u ID。每个日期都有多个A\u ID,每个A\u ID包含多个B\u ID Dates A_ID B_ID 4/5/2018 01245 DEF 4/5/2018 12345 ABC 4/6/2018 42345 WER 4/7/2018 52345 ABC 4/7/2018 67700 XCV 首先,我想显示不同的日期,就
Dates
、A\u ID
和B\u ID
。每个日期都有多个A\u ID
,每个A\u ID
包含多个B\u ID
Dates A_ID B_ID
4/5/2018 01245 DEF
4/5/2018 12345 ABC
4/6/2018 42345 WER
4/7/2018 52345 ABC
4/7/2018 67700 XCV
首先,我想显示不同的日期,就像只显示一个日期一样。第二,我想计算每个日期的总B\u ID
,但由于B\u ID
可以是多个A\u ID
,我想根据A\u ID
的MAX
进行计算。
例如,2018年4月5日4月5日B_ID的计数是一(DEF),4月6日是一(WER),而2018年4月7日
的A_ID
52345
大于2018年4月5日
的计数,因此我只将4/7/2018B_ID
B_ID
XCV
作为该日期的另一个计数。结果如下表所示
Distinct_Dates Count_B_ID
4/5/2018 1
4/6/2018 1
4/7/2018 2
获取每个b_id的最大日期,并聚合日期。为避免丢失日期,请在计数后在所有不同的日期上左键“join”
select d.date,coalesce(cnt,0)
from (select distinct date from tbl) d
left join (select dt,count(distinct b_id) as cnt
from (select b_id,max(date) as dt
from tbl
group by b_id
) t
group by dt
) t on t.dt=d.date
获取每个b_id的最大日期,并聚合日期。为避免丢失日期,请在计数后在所有不同的日期上左键“join”
select d.date,coalesce(cnt,0)
from (select distinct date from tbl) d
left join (select dt,count(distinct b_id) as cnt
from (select b_id,max(date) as dt
from tbl
group by b_id
) t
group by dt
) t on t.dt=d.date
我想您需要两个分组:
select Distinct_Dates, count(*) as Count_B_ID
from (select b_id, max(dates) as Distinct_Dates
from table
group by b_id
) tt
group by Distinct_Dates;
我想您需要两个分组:
select Distinct_Dates, count(*) as Count_B_ID
from (select b_id, max(dates) as Distinct_Dates
from table
group by b_id
) tt
group by Distinct_Dates;
这个答案需要解释。@JoakimDanielson:除了返回每个B_ID最高的行(这是唯一棘手的部分)之外,我还应该解释什么呢?这个答案需要解释。@JoakimDanielson:除了返回每个B_ID最高的行之外,我还应该解释什么呢,哪一个是唯一棘手的部分?