计算字段(calculated field)是用公式从其他字段算出来的一列,显示在查询或报表里,但不存进表中。它出现在这样的任务里:“显示每位成员的出席率百分比”或“显示每节课的费用”。
不同工具的支持程度不同,有些任务会要求在电子表格里计算。请按任务指示决定在哪里计算。本课属于数据库查询与报表。
怎样建立计算字段?
- 用文字命名结果,例如 Attendance percent。
- 找出源字段,以及公式需要的固定数字。
- 写出公式,使用字段名,顺序重要时加括号。
- 设定显示格式:小数位数,以及是否为百分比。
- 手工验证一条记录,与公式结果对照。
完整例题
使用模块页面里虚构的 Harbour Hill Clubs 表。社团一共上了 12 节课。
任务:加入一个名为 Attendance 的字段,显示每位成员出席了 12 节中的百分之几,保留一位小数。
**第 1 步,公式:**Attendance = Sessions / 12 * 100
**第 2 步,验证 Dewi(11 节):**11 / 12 = 0.91666…,0.91666… * 100 = 91.666…
**第 3 步,格式:**保留一位小数得 91.7。
**第 4 步,再验证 Evan(7 节):**7 / 12 = 0.58333…,乘 100 是 58.333…,显示为 58.3。
**第 5 步,抽查其他人:**Bella、Farah 和 Imran 是 12 节,得 100.0。Jia 是 5 节,得 41.7。
要避免的错误
同时使用乘 100 和百分比格式:
Attendance = Sessions / 12 * 100,并且字段设为 Percent 格式。
Dewi 显示为 9166.7%,因为格式又乘了一次 100。
改正方法是只选一种。要么公式保持 Sessions / 12,并把字段设为 Percent,显示 91.7%;要么保留 * 100,字段用普通数字格式。像第 2 步那样手工验证一条记录,就能立刻发现重复乘的问题。
自测
1. 写出每节费用的公式,并求 Gopal 的值(费用 RM45,6 节)。
显示答案
Fee / Sessions。Gopal 是 45 / 6 = 7.5,即每节 RM7.50。
2. Evan 的出席率是多少,保留一位小数?
显示答案
7 / 12 * 100 = 58.333…,所以是 58.3。
3. 逾期费会在费用上加 10%。写出公式,并求 Jia 的新费用(RM60)。
显示答案
Fee * 1.1。Jia 是 60 * 1.1 = 66,即 RM66.00。另一种算法:60 + 60 * 0.1 = 60 + 6 = 66。
接下来学什么
下一课分组报表时不隐藏必需的值会用到由这类字段得出的小计。只读 SQL 练习实验室会把计算列显示在源字段旁边,练习题里还有更多计算。
如果公式看起来没错,结果却觉得不对劲,一对一线上 ICT 补习可以让老师陪你在一条记录上测试公式。