Oracle-一张表中增加计算某列值重复的次数列,并且把表中其他列也显示出来,或者在显示过程中做一些过滤
总结:
1、计算某列值(数值or字符串)重复的次数
select 列1,count( 列1 or *) count1 from table1 group by 列1
输出的表为:第一列是保留唯一值的列1,第二列是count1列的统计表。
问:那怎么把其他列信息也都显示出来呢?可以参考:http://www.myexception.cn/oracle-develop/1767413.html 我这里自己做一个总结,进入下一步。
2、一张表中增加一列计算某列值重复的次数列,并且把表中其他列也显示出来,或者在显示出来的过程中做一些过滤性处理
(1)如果,列1跟剩下的列之间信息都是一对一,那直接用max() or min()函数去一一处理剩下列就可以完全显示剩下列信息。
select count(列1 or *) count1,max(列2) 列2,max(列3) 列3,max(列4) 列4 from table1 group by 列1
(2)如果,列1跟剩下的列之间信息都是一对多,那max() or min()就会实现保留最大or最小那个(这两个函数:可以处理数值、时间早晚、日期大小、也能处理字符串会有输出不报错)
3、如果列之间是一对多,又要怎么实现“既实现计算统计功能,又完整显示剩余列信息呢?”
select SS.*,TT.* from table1 SS left join (select 列1,count( 列1 or *) count1 from table1 group by 列1) TT on SS.列1=TT.列1
4、再说一下max() or min() 函数的用的比较好的功能
(1)强大过滤功能:按过滤列的先后顺序,去实现关联性过滤功能,类似漏斗一层层过滤
(2)还可以结合其他函数使用,例如,concat()、substr()
粘贴一下例子:
1、group by 实现保留TEL_DLR值唯一,max() min()实现过滤功能