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()实现过滤功能

猜你喜欢

转载自www.cnblogs.com/Formulate0303/p/12033876.html