结构化数据中的存在判断问题

【摘要】
    从数据表中选出数据时,有时候需要判断成员在某些条件下是否存在,这些条件可能是从其他的数据表中查询的。例如分数是成绩表的字段,怎样从学生表中选出各科分数都高于 80 分的学生?如何简便快捷的处理结构化数据中的存在判断问题,这里为你全程解析,并提供 esProc 示例代码。结构化数据中的存在判断问题

 

1. 外键映射的存在性检测

在两个表中,根据外键映射的存在性查找记录。

【例 1】 统计一班男生的平均分。成绩表和学生表如下:

..

【解题思路】

从分数表选出数据时,判断是否存在班级的名称是一班且学生性别是男性的记录,如果存在则选出。

【SPL 脚本】

  A B
1 =connect("db") /连接数据库
2 =A1.query("select * from Score") /查询学生表
3 =A1.query("select * from   Student") /查询学生成绩表
4 =A3.select(Class=="Class 1"   && Gender=="Male") /选出一班男生
5 =A2.join@i(Class:StudentID, A4:Class:ID) /使用函数 A.join@i() 连接过滤
6 =A5.groups(StudentID; avg(Score):Score) /分组汇总每个学生的平均分

A6的执行结果如下:

StudentID Score
1 76
3 74

 

当外键表数据量大时,可以使用游标的有序归并来解决。

【例 2】 查询 2014 年每月没有使用折扣的订单数量。订单表和订单明细表如下:

..

【解题思路】

从订单表选出数据时,判断是否存在折扣为 0 的订单,如果存在则选出。

【SPL 脚本】

  A B
1 =connect("db") /连接数据库
2 =A1.cursor("select * from Order where year(Date)=2014   order by ID") /
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值