ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3354|回复: 15

[求助] 刚接触SQL,有个小代码大家看一下

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-10-25 10:54 | 显示全部楼层 |阅读模式
  1. SELECT T.姓名,T.班级,SUM(T.得分) AS 总得分
  2. FROM (SELECT 姓名,班级,科目,得分
  3. FROM [成绩表$]
  4. UNION ALL
  5. SELECT 班级&"小计" AS 姓名,班级,科目,AVG(得分)
  6. FROM [成绩表$]
  7. GROUP BY 科目,班级
  8. UNION ALL
  9. SELECT "合计" AS 姓名,null AS 班级,科目,AVG(得分)
  10. FROM [成绩表$]
  11. GROUP BY 科目) T
  12. GROUP BY T.姓名,T.班级,(T.班级=班级&"小计"),(T.班级="合计")
  13. ORDER BY (T.班级="合计") DESC,(T.班级=班级&"小计") ,T.班级
复制代码
GROUP BY T.姓名,T.班级,(T.班级=班级&"小计"),(T.班级="合计")是怎么分组的?,(T.班级=班级&"小计"),(T.班级="合计")是什么意思?谢谢

TA的精华主题

TA的得分主题

发表于 2012-11-2 22:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不知道这个问题解决了么?

TA的精华主题

TA的得分主题

发表于 2012-11-3 13:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
第一部分:
ORDER BY:
  1. 13.ORDER BY (T.班级="合计") DESC,(T.班级=班级&"小计") ,T.班级
复制代码

意思为对返回的查询结果先按班级中的“班级合计”项降序排序、再按班级中的“班级小计”项升序排序,最后按班级升序排序。
ORDER BY为排序方式,其中,ASC为升序,DESC为降序,如缺省,则默认为ASC升序排序。
第二部分:
GROUP BY :
  1. GROUP BY T.姓名,T.班级,(T.班级=班级&"小计"),(T.班级="合计")
复制代码
GROUP BY子句比ORDER BY子句优先执行,也就是说,先执行GROUP BY子句再执行ORDER BY子句。通常,ORDER BY出现的字段必须先在GROUP BY子句声明,但是,这种情况的ORDER BY部分,



  1. GROUP BY T.姓名,T.班级
复制代码
楼主原本的GROUP BY部分,个人猜测原因是为保证语句的完整性和可读性,避免删除后出现错误和方便以后对语句的修改。

TA的精华主题

TA的得分主题

发表于 2012-12-11 22:35 | 显示全部楼层
wuxiang_123 发表于 2012-11-3 13:50
第一部分:
ORDER BY:

香帅,关键是这两个:(T.班级=班级&"小计"),(T.班级="合计"),到底是什么意思啊?没看懂……
按照他这个语句,T.班级是不可能和班级&"小计"相等的啊。。。

TA的精华主题

TA的得分主题

发表于 2012-12-12 09:29 | 显示全部楼层
  1. (T.班级=班级&"小计")
复制代码
此语句记录源自楼主第5行代码。
  1. (T.班级="合计")
复制代码
此语句记录源自楼主第9行代码。

TA的精华主题

TA的得分主题

发表于 2012-12-12 09:55 | 显示全部楼层
本帖最后由 hustnzj 于 2012-12-12 09:56 编辑
wuxiang_123 发表于 2012-12-12 09:29
此语句记录源自楼主第5行代码。此语句记录源自楼主第9行代码。


是啊,就是不懂啥意思,我使用楼主的语句可以得出按班级的小计行和一个合计行

TA的精华主题

TA的得分主题

发表于 2012-12-12 09:58 | 显示全部楼层
wuxiang_123 发表于 2012-12-12 09:29
此语句记录源自楼主第5行代码。此语句记录源自楼主第9行代码。

准确的是,这种写法从没见过,()表示的是一个集合还是一个字段啊?

TA的精华主题

TA的得分主题

发表于 2012-12-13 09:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
hustnzj 发表于 2012-12-12 09:58
准确的是,这种写法从没见过,()表示的是一个集合还是一个字段啊?

逻辑表达式,返回一个TRUE(-1)或FALSE(0)的值。你将其看成由-1和0构成的字段也可以。

TA的精华主题

TA的得分主题

发表于 2012-12-13 11:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
wuxiang_123 发表于 2012-12-13 09:07
逻辑表达式,返回一个TRUE(-1)或FALSE(0)的值。你将其看成由-1和0构成的字段也可以。

我觉得也是这样,但这样的话,T.班级是不可能和班级&"小计"相等的啊,返回全是0,怎么Group By啊?

TA的精华主题

TA的得分主题

发表于 2012-12-13 20:03 | 显示全部楼层
关键在于你在达成什么意思?!
从语句来看,这二段,不起作用的。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-3 05:39 , Processed in 0.025072 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表