当前位置:首页 > 开发语言 > 正文

oracle group by用法 Oracledistinct用法

oracle group by用法 Oracledistinct用法

大家好,今天小编来为大家解答以下的问题,关于oracle,Oracledistinct用法这个很多人还不知道,现在让我们一起来看看吧!oracle实现多行合并的方法or...

大家好,今天小编来为大家解答以下的问题,关于oracle,Oracledistinct用法这个很多人还不知道,现在让我们一起来看看吧!

oracle实现多行合并的方法

oracle10g以后,提供了一个函数WMSYS.WM_CONCAT,能很轻松实现该功能。

selectt.rank,WMSYS.WM_CONCAT(t.Name)TIMEFromt_menu_itemtGROUPBYt.rank;

oracle中如何求百分比

1.求百分比的方式主要有两种:1)使用公式:=(被除数/除数)*100%2)使用函数:使用Oracle提供的函数to_char(),并搭配格式占位符FM999990.00%即可实现将数值转化为百分比形式。

2.例如:SELECTto_char(0.78,'FM999990.00%')fromdual;运行以上代码结果为:78.00%;3.实际上,在Oracle中,求百分比的方式还有很多种,具体应用需要根据实际情况进行选择。

oracle行转列sql怎么写

droptableABC;createtableABC(idnumber,namevarchar2(50),kcNamevarchar2(50),scorenumber);insertintoABCvalu

droptableABC;

createtableABC(idnumber,namevarchar2(50),kcNamevarchar2(50),scorenumber);

insertintoABCvalues(1,'张三','语文',88);

insertintoABCvalues(2,'张三','数学',68);

insertintoABCvalues(3,'张三','英语',78);

insertintoABCvalues(4,'李四','英语',78);

insertintoABCvalues(5,'李四','语文',88);

insertintoABCvalues(6,'李四','数学',79);

insertintoABCvalues(7,'王五','英语',74);

insertintoABCvalues(8,'王五','语文',58);

insertintoABCvalues(9,'王五','数学',98);

select*fromabc;

selectabc.Name,sum(decode(kcName,'语文',SCORE,null))语文,

sum(decode(kcName,'数学',SCORE,null))数学,

sum(decode(kcName,'英语',SCORE,null))英语

fromabcgroupbyabc.name;

结果:

NAME语文数学英语

1王五158198174

2李四188179178

3张三188168178

如何用oracle实现行列转换

这个问题我可以回答您。

在oracle中有两个牛逼的函数,分别是:wmsys.wm_concat和

scott.listagg

,可以实现行列转换,非常简单,也是我们日常开发及运维工作中经常用得到的两个函数。

wm_concat是oracle10g推出的一个行列转换函数,而

scott.listagg

是oracle11g中推出的,两者作用一样,但使用上稍有差异。

例子:

我们创建一个员工信息表:EMP,表中有三个字段,分别是:

EMPNO:员工编号

NAME:员工姓名

DEPTNO:部门编号

建表SQL:

createtableEMP(empNovarchar(50),namevarchar(30),deptNovarchar2(50));

手动插入部分数据:

insertintoEMPvalues('11','ZK01','1');insertintoEMPvalues('12','ZK02','2');insertintoEMPvalues('13','ZK03','3');insertintoEMPvalues('14','ZK04','4');insertintoEMPvalues('15','ZK05','1');insertintoEMPvalues('16','ZK06','2');insertintoEMPvalues('17','ZK07','3');insertintoEMPvalues('18','ZK08','4');insertintoEMPvalues('19','ZK09','1');insertintoEMPvalues('20','ZK10','2');insertintoEMPvalues('21','ZK11','3');insertintoEMPvalues('22','ZK12','4');insertintoEMPvalues('23','ZK13','5');

现在我们的需求是要通过SQL查出每一个部门下都有哪些员工,员工要求在一行展示,员工之间用逗号隔开。

1、函数wmsys.wm_concat

用法:wmsys.wm_concat(列名),该函数可以把列值用逗号隔开,在一行显示。

selectT1.deptno,to_char(wmsys.wm_concat(T1.name))fromempT1groupbyT1.deptnoorderbyT1.deptnoasc

结果:已经达我们的预期。

2、函数

scott.listagg

用法:listagg(列名,分隔符)+withingroup(orderby列名)

selectT1.deptno,listagg(T1.name,',')withingroup(orderbyT1.deptno)namefromempT1groupbyT1.deptnoorderbyT1.deptnoasc

结果:也达到我们的预期。

感谢聆听,如果还有什么疑问,请在评论区留言,看到会回复,谢谢!

oracle视图为什么不能用groupby语句

groupby表示分组,必须和count,sum,avg等等聚集函数配合使用和视图没有什么关系,因为,你的select语法中,没有聚集函数比如:selectACC_USER_ID,count(*)fromled_eventgroupbyACC_USER_ID;

oracle统计语句

oracle查询语句:select字段名from表名(where判断条件);oracle的统计函数(count)

selectcount(字段名),字段1,字段2from表名(where判断条件)groupby字段1,字段2;

关于本次oracle和Oracledistinct用法的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

最新文章