这句话是对的还是错的?是关于SQL的

nofaitureoftwo 2004-10-24 07:40:01
书上说,"在SELECT子句下,任何直接出现的字段和出现在函数调用中的字段都必须出现在GROUP BY的子句下",可紧接着,书上又列举了下面一个例子:

有一个数据库,名叫infor,,它有一个city字段,代表城市名字,和quanlity字段代表产量,area字段代表地区,每个地区的产量不同,几个area属于一个city,大致是:
area city quanlity
as nanjing 345
wqw nanjing 453
dqw shanghai 456
qw shanghai 457
gqw tianjing 483
现在,想算出一个城市的平均产量,SQL语句如下:
SELECT
city,AVG(quanlityy) AS f
FROM
info
GROUP BY
city
在这里,quanlity根本没在GROUP BY子句中出现,而它却是SELECT子句下函数调用中的字段,书上的讲法自相矛盾,把我搞糊涂了!
那句话到底对不对呀?
...全文
90 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
trumplet 2004-10-25
  • 打赏
  • 举报
回复
至少说明书上的说法不严谨
lengyg 2004-10-25
  • 打赏
  • 举报
回复
“任何直接出现的字段和出现在函数调用中的字段”,不包括组函数(如:avg,sum,count等)
trumplet 2004-10-25
  • 打赏
  • 举报
回复
“任何直接出现的字段和出现在函数调用中的字段”确实不好理解,

quantity不是“直接出现”的,但却是“出现在函数调用中”。

本人才疏学浅,我只能认为是书上错了,
Tasia 2004-10-24
  • 打赏
  • 举报
回复
书上说的没有矛盾啊,它是说“任何直接出现的字段”,它使用avg(quantity),quantity字段不是直接出现的,avg()是一个分组函数,所以可以出现。
zouyiyy 2004-10-24
  • 打赏
  • 举报
回复
这里说的是按照city的顺序来排列,avg是平均数,是没办法排序的

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧