我想用group by但是不想用到聚合函数,有办法吗?
前端之家收集整理的这篇文章主要介绍了
我想用group by但是不想用到聚合函数,有办法吗?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想用group by但是不想用到聚合函数,有办法吗?[问题点数:30分,结帖人winmenaruto]
-
-
关注
-
winmenaruto
-
winmenaruto
-
本版等级:
-
结帖率:97.59%
-
|
楼主
发表于: 2009-08-04 16:33:11
问题1:
我想用groupby但是不想用到聚合 函数,有办法吗?
具体问题如下:
有表aaa
FruitNameCountryPrice
apple china 1
banana china 2
orange china 3
apple japan 2
cherry japan 5
要求:列出每个国家价格大于3的水果的信息
select*
fromaaa
groupbycountry
havingprice>=3
我这样写是不对的,因为用了groupby,所以select后面必须用聚合 函数,但我这里没必要这么用啊,怎么办?
问题2:
是不是having后面也要用聚合 函数才行啊
问题3:
我这么写为什么也不对啊
selectcount(fruitname)asMycount
fromaaa
groupbycountry
whereprice>=2
在PL/ sql下做的。
-
<iframe id="iframeu1636200_0" src="http://pos.baidu.com/ccwm?rdid=1636200&dc=2&exps=11 3010&di=u1636200&dri=0&dis=0&dai=2&ps=1486x372&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1471922841847&ti=%E6%88%91%E6%83%B3%E7%94%A8group%20by%E4%BD%86%E6%98%AF%E4%B8%8D%E6%83%B3%E7%94%A8%E5%88%B0%E8%81%9A%E5%90%88%E5%87%BD%E6%95%B0%EF%BC%8C%E6%9C%89%E5%8A%9E%E6%B3%95%E5%90%97%EF%BC%9F-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&ari=2&dbv=2&drs=3&pcs=1323x874&pss=1323x12877&cfv=0&cpl=4&chi=1&cce=true&cec=UTF-8&tlm=1471922841&rw=874&ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F310196189&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DM37BrBIQ23wyFbjBL-h9DhoSZHz0K__f7ANx6Q114mEYFCF2z8_3tVsu5iEKCGRn%26wd%3D%26eqid%3Da91f332000075dbb0000000557bbc294&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=6&col=zh-CN&cdo=-1&tcn=1471922842&qn=bd4d4712463245b9&tt=1471922841832.19.240.242" width="200" height="22" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style=" Box-sizing: content- Box; border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;"></iframe>
-
-
<iframe id="iframeu1636204_0" src="http://pos.baidu.com/ccwm?rdid=1636204&dc=2&exps=11 3010&di=u1636204&dri=0&dis=0&dai=3&ps=1486x880&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1471922841847&ti=%E6%88%91%E6%83%B3%E7%94%A8group%20by%E4%BD%86%E6%98%AF%E4%B8%8D%E6%83%B3%E7%94%A8%E5%88%B0%E8%81%9A%E5%90%88%E5%87%BD%E6%95%B0%EF%BC%8C%E6%9C%89%E5%8A%9E%E6%B3%95%E5%90%97%EF%BC%9F-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&ari=2&dbv=2&drs=3&pcs=1323x874&pss=1323x12877&cfv=0&cpl=4&chi=1&cce=true&cec=UTF-8&tlm=1471922841&rw=874&ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F310196189&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DM37BrBIQ23wyFbjBL-h9DhoSZHz0K__f7ANx6Q114mEYFCF2z8_3tVsu5iEKCGRn%26wd%3D%26eqid%3Da91f332000075dbb0000000557bbc294&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=6&col=zh-CN&cdo=-1&tcn=1471922842&qn=52817f31456869fe&tt=1471922841832.20.248.249" width="200" height="22" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style=" Box-sizing: content- Box; border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;"></iframe>
|
|
@H_404_177@
-
-
关注
-
wildwave
-
小灰狼W
-
本版等级:
-
更多勋章
#1得分:0
回复于: 2009-08-04 16:41:32
汗,按你要求根本不要分组了
select*
fromaaa
whereprice>=3
不就行了吗
|
|
@H_404_177@
-
-
关注
-
shiyiwan
-
shiyiwan
-
本版等级:
-
#2得分:0
回复于: 2009-08-04 16:42:44
1.为什么不用
select*fromaaawhereprice>=4;
2.having一般和groupby一起用
3.应该是:
selectcountry,count(price)fromaaawhereprice>=2groupbycountry;
|
|
@H_404_177@
#3得分:0
回复于: 2009-08-04 16:42:53
按国家顺序
显示的话加个
1
2
3
|
select
*
from
aaa
where
price>=3
order
by
country
|
@H_404_177@
|
@H_404_177@
winmenaruto
winmenaruto
本版等级:
#4得分:0
回复于: 2009-08-04 16:48:54
那我问题1这么问:
如果要查出水果种类有两种以上的国家的信息,怎么写呢
selectcountry
fromaaa
groupbycountry
havingcount(*)>=2
我是认为这么写,但是是错的,因为select后面没有用聚合 函数。怎么整、?
|
|
@H_404_177@
#5得分:0
回复于: 2009-08-04 17:04:45
2
country
aaa
group
country
having
count
(fruitname)>1
|
@H_
404_177@
如果你上题中要按国家分组,查出每个国家价格大于3的水果名
这么写
3
4
5
6
7
8
9
10
country,ltrim(
max
(fruitname),
','
)fruitname
from
(
(
a.*,row_number()over(partition
price)rn
aaaa
price>=3)
start
with
rn=1
connect
country=
prior
country
and
rn-1=
rn)
country
COUNTRY FRUITNAME
china orange,banana
japan cherry
|
@H_
404_177@
你还是先详细看看groupby和聚合
函数那块的说明吧
-
-
关注
-
andyguan01_2
-
andyguan01_2
-
本版等级:
-
#6得分:0
回复于: 2009-08-04 17:05:51
你这个语句没有错啊,报什么 错误信息?
|
|
@H_404_177@
#7得分:0
回复于: 2009-08-04 17:07:33
分组
查询前面的字段要用聚合
函数(用来分组的那个字段除外),还有条件基本上都是写在from后面的where子句里,少用having
|
@H_404_177@
-
-
关注
-
inthirties
-
inthirties
-
本版等级:
-
#8得分:0
回复于: 2009-08-04 17:36:50
这句语法上应该没有 错误,不过如果国家有重复水果的话。数据上是有问题的,
应该改为
selectcountry
fromaaa
groupbycountry
havingcount(distinct(FruitName))>=2
|
|
@H_404_177@