关于oracle的分组排序,空值转化函数,求和函数,同一列不同行合并查询

本文详细介绍了在OracleSQL中如何进行分组排序,包括空值转化函数NVL和求和函数SUM的使用,以及如何通过LEFTJOIN和GROUPBY实现数据合并。同时展示了如何使用WM_CONCAT函数对同一列不同行的数据进行合并查询。
摘要由CSDN通过智能技术生成

1、oracle关于分组排序,空值转化函数,求和函数的查询sql

sql的查询要求是查询A表中的积分值总和并进行逆序排序,并且需要关联B表中的用户名和手机号

SELECT
   t.USER_ID,
   NVL( t.USERNAME, '无效的用户' ) AS name,//空值转化函数将t结果集中的空值 全部用“无效用户” 来代替
   NVL( t.PHONE, '无电话' ) AS phone, //空值转化函数将t结果集中的空值 全部用“无电话” 来代替
   t.total 
FROM
   (
   SELECT
      SUM( d.INTEGRAL_VALUE ) AS total, //求和A 表中积分值的字段
      d.USER_ID,
      m.USERNAME,
      m.PHONE
   FROM
      A表 d
      LEFT JOIN B表 m ON d.USER_ID = m.USERID
   GROUP BY
      d.USER_ID,
      m.USERNAME,
      m.PHONE
   ) t       //将A,B表的左连接查询结果集作为一个查询的表t 来进行最后的查询排序
   where 1=1   //此处可添加where条件
ORDER BY
   t.TOTAL DESC //表t 按照积分总和逆序排序

最后得到的查询结果集如下图

sql分析

(1)分组查询的时候注意,查询字段必须出现在关键字GROUP BY 后面

(2)SUM(表.字段)//求和指定的字段函数

(3)NVL(表.字段,‘替代值’)//空值转换函数 将指定表字段为空是 自定转化为替代值

2、oracle关于同一列不同行合并查询的查询sql

A表

B表

A表和B表联合查询:要求将人员信息和公司职务全部联合查询出来,并且同一个人的不同列数据如公司和职务合并为一行数据

SELECT
    t.userid,
    t.NAME,
    t.PHONE,
    wmsys.wm_concat ( t.COMPANY ), //不同行同列数据进行拼接
    wmsys.wm_concat ( t.DUTY ) //不同行同列数据进行拼接
FROM
    (
    SELECT
        a.DUTY,
        a.COMPANY,
        a.name,
        b.phone,
        b.userid 
    FROM
        ceshi_A a,
        ceshi_B b 
    WHERE
        a.userid = b.userid 
    ) t 
GROUP BY
    t.userid,
    t.NAME,
    t.PHONE

最后的展示效果如下图

最后得到的是每个人员的公司项和职务项合并,其他项正常展示

wmsys.wm_concat ( t.COMPANY )此类函数与GROUP BY关键字是一起使用的,如此一来就可以通过其他字段分组,然后拼接指定要求的不同行同列字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值