Excel 2010 SQL应用101 域聚合函数之DCOUNT
作者:互联网
目录
源数据表
ID | 姓名 | 课程 | 得分 |
1 | 小王 | 语文 | 65 |
2 | 小王 | 数学 | 78 |
3 | 小王 | 英语 | 89 |
4 | 小王 | 化学 | 82 |
5 | 小黄 | 语文 | 65 |
6 | 小黄 | 数学 | 85 |
7 | 小黄 | 英语 | 100 |
8 | 小黄 | 物理 | 91 |
9 | 小黄 | 化学 | 55 |
10 | 小黄 | 生物 | 92 |
11 | 小刘 | 语文 | 59 |
12 | 小刘 | 数学 | 94 |
13 | 小刘 | 英语 | 94 |
14 | 小刘 | 物理 | 100 |
15 | 小刘 | 化学 | 62 |
16 | 小薛 | 语文 | 73 |
17 | 小付 | 语文 | 80 |
18 | 小付 | 数学 | 100 |
19 | 小付 | 英语 | 100 |
20 | 小付 | 化学 | 65 |
如图所示为某班的期末考试成绩表,班主任需要查询每位学生得分最高两科的记录,以便根据学生成绩写好相关的评语,具体条件如下。
条件1:每位学生可以只有1条记录,如“小薛”,此时只返回搜索记录即可。
条件2:允许出现并列第2高分的情况,如小刘的“数学”、“语文”。
条件3:当出现并列第1高分的情况时,只取并列第1的两条记录。如小付的“数学”、“英语”。
解决方案
以“现有连接”方式添加数据源
SELECT *
FROM [sheet1$]
WHERE DCOUNT("得分","sheet1$","姓名='" & 姓名 &"' AND 得分>" & 得分)<2
应用程序 DCount 方法
DCount 函数来确定特定记录集(一个域)内的记录数。
语法
表达式。DCount(Expr、 Domain、 Criteria)
expression:表示 Application 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
Expr | 必需 | String | 用于标识要记录计数的字段的表达式。 它可以是标识表或查询中的字段的字符串表达式,也可以是对该字段中的数据进行计算的表达式。 在_Expr_中, 可以包含表中的字段、窗体上的控件、常量或函数的名称。 如果_expr_包括函数, 则它可以是内置的, 也可以是用户定义的, 但不能是另一个域聚合函数或 SQL 聚合函数。 |
Domain | 必需 | String | 字符串表达式, 用于标识构成域的一组记录。 可以是表名称或不需要参数的查询的查询名称。 |
Criteria | 可选 | Variant | 可选的字符串表达式,用于限制作为 DCount 函数执行对象的数据的范围。 例如,criteria 通常等同于 SQL 表达式中的 WHERE 子句,没有单词 WHERE。 如果省略了 criteria,那么 DCount 函数将对整个域进行 expr 评估。 _条件_中包含的任何字段都必须也是_域_中的字段;否则, DCount函数将返回Null。 |
返回值
Variant
如果不需要知道记录的特定值,则可以使用DCOUNT函数对域中的记录进行计数。虽然expr参数可以对字段执行计算,但DCOUNT函数仅仅统计记录的数目。expr所执行的任何
计算的值均不可用。如果需要指定条件以限制函数执行的数据范围,则可以在SQL中使用DCOUNT函数。
在本例中,关键是构造WHERE子句的条件,通过使用DCOUNT函数产生新的条件进行判断,选出符合条件的记录。本例的关键之处是“DCOUNT(“得分”,”sheet1$”,”姓名="'&姓名
&"'AND得分>”&得分)<2”部分,其原理是:
第一步,首先取出第一条记录,
然后以该记录执行DCOUNT函数:DCOUNT(“得分”,”sheet1$”,”姓名="'& 小王&"'AND得分>”& 65),进行类似Excel中公式按F9的逐步分析得到如下结果:
DCOUNT(“得分”,”sheet1$”,”姓名="'& 小王&"'AND得分>”& 65)=3<2
第二步,由第一步中结果得到相应的执行结果语句:
SELECT * FROM [sheet1$] WHERE FALSE,所以该条记录不符合要求,然后取出第二条记录,进行第一条记录的类似分析
其他记录依次类推,找出符合条件的记录。
任何可以在WHERE子句中使用的条件都可以放在DCOUNT函数的criteria参数中,例如,在本例中,需要统计“成绩表”中“小王”和“小刘”的记录数,其SQL语句为:
SELECT COUNCT("姓名","sheet$","姓名 IN ('小王','小刘')")
对应其使用WHERE子句的SQL语句为:
SELECT COUNT(*)
FROM [sheet1$]
WHERE 姓名 IN ('小王','小刘')
标签:得分,小王,函数,记录,DCOUNT,Excel,SQL,WHERE 来源: https://blog.csdn.net/ngbshzhn/article/details/113241377