数据库sql语句多表连接查询+groupby分组的使⽤
其实,在学校的⼀次课设中就发现了不会多表连接查询+group by分组,这次实在实习中遇到这种问题,不可能混过去了,便解决⼀下它吧.
问题背景:
今天写sql语句的时候,需要从两个表中查出关联的数据,并且需要分组
第⼀次写出来的代码如下
select b.ATTR_VALUE_NAME,count(a.*)
from sales_main.opp_info a,attr_value b
where b.STATUS_CD=a.STATUS_CD
group by a.STATUS_CD
报错,说列名⽆效
百度了好长时间,发现了问题所在
先给出group by的基本⽤法
group by可以根据给定数据列的每个成员对查询结果进⾏分组统计,最终得到⼀个汇总表
select字句中的列名必须为分组列或列函数.列函数对于group by字句定义的每个组返回⼀个结果
group by⼀般和聚合函数⼀使⽤才有意义,⽐如count,sum,avg等,使⽤group by 的两个要素:
groupby分组(1)出现在select后⾯的字段,要么是聚合函数中的,要么是group by中的.
(2)要筛选结果,可以先使⽤where再⽤group by或者先⽤group by再⽤having
问题主要在于,⽤group by分组时,select后⾯的字段要么是聚合函数,要么在group by中,⼀般都是这的问题.
那么如何解决呢,试了好多办法,join ⼦查询 having都不⾏,后来看到⼀篇帖⼦,把要查询的字段加上聚合函数就可以了,max或者min都可以
select max(b.attr_value_name) as商机状态 ,count(*) as数量
from sales_main.opp_info a,attr_value b
where b.STATUS_CD=a.STATUS_CD
group by a.STATUS_CD
查询成功!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论