ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 从零开始学习SQL(图文教程)

    [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-5 12:05 | 显示全部楼层
本帖已被收录到知识树中,索引项:SQL应用
本帖最后由 335081548 于 2013-11-5 12:43 编辑

使用SQL查询二个日期范围之内的数据
方法一:
  1. select * from [Sheet1$A:D] where 出生年月 between #" & Sheet1.Range("G3") & "# and #" & Sheet1.Range("H3") & "#"
复制代码
方法二:
  1. select * From [sheet1$A:D] where 出生年月 Between (select * From [sheet1$G2:G3]) and (select * From [sheet1$H2:H3])
复制代码
方法三:
  1. select * From [sheet1$A:D] where 出生年月>=(select * From [sheet1$G2:G3]) and 出生年月<=(select * From [sheet1$H2:H3])
复制代码
以上语句第一种法只适合在VBA中使用。
第二种和第三种方法可以在Microsoft Query中和OLE DB使用手动刷新能根据条件改变数据改变。
第二种及第三种是使用子查询语句。
子查询语句一
  1. select * From [sheet1$G2:G3])
复制代码
出来的结果是:1981/1/1
子查询语句二
  1. select * From [sheet1$H2:H3
复制代码
出来的结果是:1985/1/1
用子查询来引用单格来作为条件查询是一种不错的用法。
BETWEEN在SQL中的作用
BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。
BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
BETWEEN在Excel中的SQL语法如下:
  1. Select 字段 from [表名$] where 字段 BETWEEN 条件A AND 条件B
复制代码
SQL子查询法二日期间数据.png

SQL查询二个日期范围之内的数据.rar

23.08 KB, 下载次数: 995

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-5 12:06 | 显示全部楼层
本帖最后由 335081548 于 2013-11-5 15:23 编辑

WHERE、GROUP BY 和 HAVING 子句的正确顺序对编写高效的查询代码会有所帮助:
       WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。
  &#61623; GROUP BY 子句用来分组 WHERE 子句的输出。
  &#61623; HAVING 子句用来从分组的结果中筛选行。
HAVING子句必须跟在GROUP BY(分组)子句之后,但ORDER BY(排序)子句之前。
HAVING子句与Where子句有如下相似之处:
1.两者都是从结果表中筛选数据
2.两者都使用条件筛选。
3.两者,数据中的Null不满足任何条件。Is Null例外。
HAVING子句与Where子句有如下不同之处:
1.Where子句只能在进行任何处理之前从原始数据表中删除、筛选。
2.HAVING子句可以在进行绝大部分处理后删除、筛选已分组和已汇总的数据。
3.Where子句不能在它设置的条件中使用聚合函数。
4.HAVING子句可以在经的条件中使用聚合函数。

SQL语句在包含HAVING的语法如下:
  1. Select 列字段1,列字段2,列字段3,..... From[工作表名$] Where 条件 GROUP BY 列字段1,列字段2 HAVING 条件 ORDER BY  列字段1,列字段2
复制代码
实例进行演示:
  1. SELECT 姓名, SUM(产品数) as 产品总数 From [Sheet1$] GROUP BY 姓名 HAVING SUM(产品数)>100
复制代码
统计产品数小于100的不显示(提取大于100的数据)。按姓名分类汇总产器数 数据大于100的。
简单理解:
HAVING的作用是GROUP BY。(设置分组的条件)。针对于分组。
WHERE的作用是SELECT的列字段的条件。(字段条件)。针对于原数据行。
HAVING.png

VBA_SQL HAVING .rar

13.01 KB, 下载次数: 959

TA的精华主题

TA的得分主题

发表于 2013-11-5 12:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-11-5 13:20 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-10 19:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
SQL 统计出现重复的名称:
提取重复出现的名称.png
SQL语句如下:
  1. Select 名称,Count(1) As 重复次数 From [Sheet1$A:A] Group By 名称 Having Count(1)>1
复制代码
只显示名称如下:
  1. Select 名称 From [Sheet1$A:A] Group By 名称 Having Count(1)>1
复制代码


用SQL提取重复的名称.rar

15.21 KB, 下载次数: 1099

TA的精华主题

TA的得分主题

发表于 2013-11-12 14:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
335081548 发表于 2013-11-10 19:59
SQL 统计出现重复的名称:

SQL语句如下:

感谢楼主,本帖非常适合新人。
请问,本例中count(1)该如何理解,是count第一列的意思么?

TA的精华主题

TA的得分主题

发表于 2013-11-30 11:26 | 显示全部楼层
飞狐老师  超级超级厉害的   {:soso_e179:}{:soso_e163:}学习了哦

TA的精华主题

TA的得分主题

发表于 2013-11-30 14:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
好内容,正在寻觅这方面的知识,谢谢。老师辛苦了!

TA的精华主题

TA的得分主题

发表于 2013-12-1 11:22 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-12-1 11:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
顶起来,慢慢学学
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 04:39 , Processed in 0.045307 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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