oracle sql group_concat,SQL——Group By语句、Having语句以及WM_CONCAT使用

原标题:SQL——Group By语句、Having语句以及WM_CONCAT使用

提起Group By一定会有

SUM() -----求和

AVG() -----求平均值

COUNT()-----计算总数

MAX()-----求最大值

MIN()-----求最小值

等函数,今天就以Count来看怎样使用group by 函数。

今天只是用一张Person表,数据关系为,人员可能在社会中有多种称呼。如Rone既是 E (Engineer)又是 S(Student)。其数据如下图:

6f786b56e670d4f887003ad02d1bafe8.png

图1.Person-人员表

我们现在要统计每个人有几种称呼,则可以使用group by 语句。记住我们要统计人员有几种社会属性,而不是社会属性有几个人。接下来看SQL怎么写:

aa4b5f995a87679e104f50765e142335.png

图2.查询每个人有几个社会称呼

从查询结果中我们可以看出Adam有两种称呼,我们还可以统计同一个社会称呼的有几人,原理是一样的,只是Group By的列名称变成社会属性(Type字段),见下图:

(如果觉得绕头的话请跳过此步 。。。)

645cead25c6bab698ef771dad8d14d7c.png

图2附图.统计社会属性对应几个人

接下来 我们又想筛选出称呼大于2的人员,因为称呼多的人都比较牛。我们想一下如果要筛选Count后的值,怎么实现呢?数据库有Having语句可以实现这个功能。看SQL语句:

ab5f8dbb8179fba6f24796207073b392.png

图3.使用Having进行Group by后的过滤

最后,我们想要查看这个牛人Alex都有哪些称呼,在MySQL中有GROUP_CONCAT()函数,在Oracle中肯定也有一个函数WM_CONCAT()它们的作用是一样的对分组多条的数据进行“,”分割,那么我们看一下它们怎么使用:

a26025925142e9907b9581000f9881f6.png

图4.对分组函数进行逗号分割显示

Now,我们可以看出Alex既是数据 A 分析师、B 老板、E 开发工程师。对于,SUM(),AVG(),MAX(),MIN()函数只是把Count改成为其中之一就可了,但是求和、平均值、最大值、最小值肯定是数字列而不是像我们表中的字符列进行计算。

责任编辑:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值