"group
by
字段列表"
表示根据后面的字段来分组,如果只有1个字段,那只是根据这个字段的值来进行一次分组就可以了;若后面有多个字段,那表示根据多字段的值来进行层次分组,分组层次从左到右,即先按第1个字段分组,然后在第1个字段值相同的记录中,再根据第2个字段的值进行分组;接着第2个字段值相同的记录中,再根据第3个字段的值进行分组依次类推。
正确无误的写法应该为:
select OperateUser, AccountName, Operatetime, Recorddate, Income, Expense, Balance, Remark
from FmAcountOperateRecord
GROUP BY OperateUser, AccountName, Operatetime, Recorddate, Income, Expense, Balance, Remark
order by Operatetime
这个结果集中 列出的
OperateUser, AccountName, Operatetime, Recorddate, Income, Expense, Balance, Remark
八个字段完全相同的结果将被合并不进行重复显示
如果这八个字段中,有一些字段你又不想关心它的重复值,又想让它们合并为一条输出,那是“不科学”的,不被充许的,机器无法知道它应该显示数据表里的哪条记录上的值。理由你自个细想想就明白了。
如果你有耐心,可参看下面的详解。在教你的同时,我也在复习,我们共同进步。
你需要理解 GROUP BY 的含义和使用情景,这样知道什么时候用它,该不该用它。
GROUP BY 它的字面意义为“分组统计”,一般用于选择出的记录结果中,有完全相同的重复记录。
比如数据库表如下:
字段 A1 A2 A3 A4 A5
数据 张红 数学 81 及格 期中
数据 刘梅 数学 61 及格 期中
数据 王飞 语文 85 及格 期中
数据 吴青 数学 35 不及格 期中
数据 周远 语文 71 及格 期中
数据 赵强 数学 52 不及格 期中
数据 张红 数学 91 及格 期未
数据 刘梅 数学 73 及格 期未
数据 王飞 语文 88 及格 期未
数据 吴青 数学 65 及格 期未
数据 周远 语文 75 及格 期未
数据 赵强 数学 50 不及格 期未
上面这张示意数据表可用GROUP BY来分组统计下面的信息:
每同学期中、期未的成绩总分
SELECT A1,A2,SUM(A3) GROUP BY A1,A2
解说:此统计中,A3作为分组相加的字段,所以用SUM(A3)。A4、A5是不能列入的,一但列入结果集中如去除SUM(A3)作为关心字段后,没有重复结果集,也就失去了分组的意义,虽能得到结果,但没有意义。比如:SELECT A1,A2,A4,A5,SUM(A3) GROUP BY A1,A2,A4,A5
同理,可求上表中语文、数学的期中、期未的分别总分:
SELECT A2,A5,SUM(A3) GROIP BY A2,A5
此时,就会先把A2、A5相同的分组进行求和,得到的就是语文、数学的期中、期未的总分。
使用 GROUP BY 可以不要统计的概念。但所有的SELECT出的字段,除要参与统计的外,别的都要在GROUP BY后列出。GROUP BY后列出的字段表示它们是标志性的,它们的值“不同”时不能被合并,它们是被关心的。
可以这样写:我已经测试过了:\x0d\select student姓名,avg(sc成绩) \x0d\from student,sc \x0d\where student学号=sc学号 and 姓名 \x0d\in\x0d\(\x0d\select student姓名 from student,sc \x0d\where student学号=sc学号 and sc成绩group by student姓名 \x0d\having count()>=2\x0d\)\x0d\group by student姓名\x0d\另外group by的详细资料最好使用sql自带的帮助文档,那里最全的,其他的资料都是从哪盗版过去的,遇到group by问题可以问我的。
以上就是关于数据库查询时对多个字段group by 有什么作用在线等全部的内容,包括:数据库查询时对多个字段group by 有什么作用在线等、sqlserver2008,sql编程,group by 用法、在数据库中group by的具体用法是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)