ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ctp_119

[原创] 跟我学SQL in Excel

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-12-14 21:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:SQL应用
感谢主任分享.  学语言是一个老壳痛的事情.

TA的精华主题

TA的得分主题

发表于 2013-12-17 08:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-12-18 10:58 | 显示全部楼层
本帖最后由 缺少灵性的猪 于 2013-12-18 11:01 编辑
ctp_119 发表于 2013-10-18 13:54
实例一:导入数据    查询语句:select* from [北京$]    解析:通配符“*”在这里表示所有字段,作用有 ...

延伸①为啥老跳出来期待参数为2,试了好久。。。。
终于试出来了,原来是金额/元,应该是把它理解成了两个字段进行相除,sql找不到相应字段,然后返回了上述事项。。。。。好开心找到原因了

点评

这是我故意设置的。*号除了能简写外,还可以解决这类不规范的字段。  发表于 2013-12-18 13:31

TA的精华主题

TA的得分主题

发表于 2013-12-18 12:43 | 显示全部楼层
ctp_119 发表于 2013-10-18 13:55
实例二:别名    查询语句:select品名 as 商品名称,单价 as 销售价 from [北京$]    解析: as后面是别名,别 ...

select distinct 业务员 from 北京
==============================================================================
select distinct * from 北京,两条重复记录被删除(重复记录:指所一笔记录全部一样,才作为重复)
=====================================================================================================================
selecttop 3 * from (select 业务员,sum([金额/元]) as 销售额 from [北京$] groupby 业务员) order by 销售额 desc
,先从北京表里按照业务员销售额进行排序,然后从其中找前3名的记录。
=====================================================================================================================
selecttop 60 percent 学生编号,姓名,学科,分数 from [成绩表$] where学科='语文' order by 分数 desc
先执行从成绩表里找学科等于语文的5个记录,按照分数降序排列,然后选top60%,即成绩前3条记录
-------------------------------------------------(针对这一题的变形)
selecttop 60 percent 学生编号,姓名,学科,分数 from [成绩表$] where学科='语文' order by 分数(注意:没有desc)
这里的话会把成绩60%按升序的显示(即最小的显示),但是80%分位的和60%一致,所以也被选进来了


====================================
===================================
晚上上图

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-18 13:43 | 显示全部楼层
select distinct 业务员 from 北京
这句是对业务员字段进行去重复。
==============================================================================
select distinct * from 北京,两条重复记录被删除(重复记录:指所一笔记录全部一样,才作为重复)
这句是对记录进行去重复。
=====================================================================================================================
selecttop 3 * from (select 业务员,sum([金额/元]) as 销售额 from [北京$] groupby 业务员) order by 销售额 desc
,先从北京表里按照业务员销售额进行排序,然后从其中找前3名的记录。
首先要理解sql执行顺序,这句就不难理解了。先从北京表中按业务员对金额进行分类汇总,再在分类汇总表中按销售额进行降序排列,最后在选前3名的记录。
=====================================================================================================================
selecttop 60 percent 学生编号,姓名,学科,分数 from [成绩表$] where学科='语文' order by 分数 desc
先执行从成绩表里找学科等于语文的5个记录,按照分数降序排列,然后选top60%,即成绩前3条记录
-------------------------------------------------(针对这一题的变形)
selecttop 60 percent 学生编号,姓名,学科,分数 from [成绩表$] where学科='语文' order by 分数(注意:没有desc)没有即表示默认排序。即升序。
这里的话会把成绩60%按升序的显示(即最小的显示),但是80%分位的和60%一致,所以也被选进来了



TA的精华主题

TA的得分主题

发表于 2013-12-18 14:21 | 显示全部楼层
ctp_119 发表于 2013-12-18 13:43
select distinct 业务员 from 北京
这句是对业务员字段进行去重复。
================================= ...

最后一条sql里带出了80%,也就是四条记录。和降序排列多出一笔记录。我本来以为只会截取其中一条,另一条会被筛选掉,看样子sql在选取时时按照相同即显示。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-18 14:43 | 显示全部楼层
缺少灵性的猪 发表于 2013-12-18 14:21
最后一条sql里带出了80%,也就是四条记录。和降序排列多出一笔记录。我本来以为只会截取其中一条,另一条 ...

要理解这个80%的含义,假如有10条语句,那么显示8条。20条语句显示16条,是这个意思,和top 8是有区别的,一个是刚性的,一个是弹性的。和其他语句无关。

TA的精华主题

TA的得分主题

发表于 2013-12-20 11:21 | 显示全部楼层
本帖最后由 缺少灵性的猪 于 2013-12-20 13:21 编辑
ctp_119 发表于 2013-10-18 14:05
实例四:where条件查询    查询语句:select* from [北京$] where 业务员='刘冰'    解析:查询业务员刘 ...

比较“select业务员 from [北京$] groupby 业务员”和“select distinct 业务员 from [北京$]”语句的用法和功能,以此加深理解group by的运用。
-----------------------------------------------------------这两个语句出来的结果是一样的
=============================================================
select 业务员,品名,sum(数量) as 销售量,SUM([金额/元]) as 销售额 from 北京 group by 业务员,品名 having 业务员='刘冰' 可以按照额业务员、品名分类汇总
但是:select 业务员,品名,数量,SUM([金额/元]) as 销售额 from 北京 group by 业务员,品名 having 业务员='刘冰'  却神马也筛选不出来,楼主怎么回事?

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-20 13:18 | 显示全部楼层
缺少灵性的猪 发表于 2013-12-20 11:21
比较“select业务员 from [北京$] groupby 业务员”和“select distinct 业务员 from [北京$]”语句的用法 ...

结果是一样的,但是机理不同。望引起注意。

TA的精华主题

TA的得分主题

发表于 2013-12-21 21:30 | 显示全部楼层
ctp_119 发表于 2013-12-20 13:18
结果是一样的,但是机理不同。望引起注意。

select 业务员,品名,sum(数量) as 销售量,SUM([金额/元]) as 销售额 from 北京 group by 业务员,品名 having 业务员='刘冰' 可以按照额业务员、品名分类汇总
但是:select 业务员,品名,数量,SUM([金额/元]) as 销售额 from 北京 group by 业务员,品名 having 业务员='刘冰'  却神马也筛选不出来,楼主怎么回事?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 13:01 , Processed in 0.047566 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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