Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于Teradata SQL中另一列的最大值查找列的计数_Sql_Teradata - Fatal编程技术网

基于Teradata SQL中另一列的最大值查找列的计数

基于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 首先,我想显示不同的日期,就

表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
首先,我想显示不同的日期,就像只显示一个日期一样。第二,我想计算每个日期的总
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/2018
B_IDB_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最高的行之外,我还应该解释什么呢,哪一个是唯一棘手的部分?