sql显示前10行数据_SPL 简化 SQL 案例详解:计算各组前 N 行
取出各组的前N行数据是较常见的运算,比如:每个月每种产品销量最高的五天是哪五天,每位员工涨薪最多的一次是哪次,高尔夫会员成绩最差的三次是哪三次,等等。在SQL中,这类运算要用窗口函数以及keep/top/rownumber等高级技巧来间接处理,代码难度较大。而且许多数据库(如MySQL)还没有这些高级功能,就只能用更复杂的JOIN语句和嵌套的子查询来实现了。如果还涉及多层分组,多级关联,计算过程会更加复杂。
而在SPL中,由于top函数可以按行号、最大值、最小值等方式取分组中的前N行,因此解决此类问题更加容易、清晰。下面就用一个例子来说明。
数据库表golf存储着多位会员的高尔夫得分情况,部分数据如下:
请取出每位会员成绩最好的三次得分情况。
SPL代码:
A1:从数据库取数。点击该单元格,可以看到取数结果:
A2:=A1.group(USER_ID)。将A1的结果按照USER_ID,也就是会员分组,结果如下:
每行代表一组,其中是一个会员的所有得分记录,双击浅蓝色格子,可以看到组内成员,如下:
A3:= A2.(~.top(-3;SCORE))。计算出每组数据SCORE字段前三的记录。这里的“~”表示每组数据,~.top()表示依次对每组数据应用函数top。函数top可以取得数据集的前N条记录,比如top(3;SCORE)表示按SCORE升序排列,取前3条(即最小值);top(-3;SCORE)表示按降序排列,取前3条(即最大值,也就是这里的最好成绩)。这一步的计算结果如下:
A4:=A3.union()。将各组数据合并,结果如下:
A5:>file("golf.csv").export@ct(A4)
将计算结果导出到" golf.csv "文件,以便通过excel等工具查看:
除了导出数据, SPL还可以直接被报表工具或java程序调用,调用方法和普通数据库相似,使用它提供的JDBC接口即可向java主程序返回ResultSet形式的计算结果,具体方法可参考相关文档。【Java如何调用SPL脚本】
sql显示前10行数据_SPL 简化 SQL 案例详解:计算各组前 N 行相关推荐
- sql查询出的字段切割_SPL 简化 SQL 案例详解:多层固定分组
在数据库应用开发中,我们经常需要面对各种复杂的SQL计算,多层固定分组就是其中一种.实现该算法的思路是用left join语句将源数据按照固定的依据对齐,但由于该算法往往涉及分组汇总.行间计算.填补缺 ...
- Sqoop安装部署和数据的导入导出案例详解
目录 一.概述 二.Sqoop的工作机制 三.Sqoop1与Sqoop2架构对比 四.Sqoop安装部署 五.Sqoop的数据导入 1. 列举出所有的数据库 2. 准备表数据 3. 导入数据库表数据到 ...
- pandas读取csv文件的前几行数据(nrows参数)、pandas读取csv文件的中间几行数据(skiprows=range(a,b))
pandas读取csv文件的前几行数据(nrows参数).pandas读取csv文件的中间几行数据(skiprows=range(a,b)) 目录 pandas读取csv文件的前几行数据.pandas ...
- 数据湖架构Hudi(五)Hudi集成Flink案例详解
五.Hudi集成Flink案例详解 5.1 hudi集成flink flink的下载地址: https://archive.apache.org/dist/flink/ Hudi Supported ...
- [免费专栏] Android安全之数据存储与数据安全「详解」
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...
- OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)
OpenCV-Python实战(14)--人脸检测详解(仅需6行代码学会4种人脸检测方法) 0. 前言 1. 人脸处理简介 2. 安装人脸处理相关库 2.1 安装 dlib 2.2 安装 face_r ...
- 04-mysql数据备份之mysqldump命令详解
MYSQL数据备份之mysqldump命令详解 一.mysqldump 简介 mysqldump 是 MySQL 自带的逻辑备份工具. 它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数 ...
- pyecharts在数据可视化中的应用详解
使用pyecharts进行数据可视化 安装 pip install pyecharts也可以在pycharm软件里进行下载pyecharts库包. 下载成功后进行查询版本号 import pyech ...
- 【Dash搭建可视化网站】项目12:全球恐怖主义数据大屏制作步骤详解
全球恐怖主义数据大屏制作步骤详解 1 项目效果图 2 项目架构 3 文件介绍和功能完善 3.1 assets文件夹介绍 3.2 app.py和index.py文件完善 3.3 header.py文件完 ...
最新文章
- idea中链接mysql查询_在Idea中编写Java程序连接查询Sqlite数据库
- Scalaz(23)- 泛函数据结构: Zipper-游标定位
- 设计模式十三:proxy(代理)——对象结构型模式
- Vue实现仿音乐播放器2-新建Vue项目vuemusicplayer
- JavaScript 表单验证
- 设计模式学习总结1 - 创建型1 - Abstract Factory抽象工厂模式
- 用友u8数据库表结构
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- 14. Longest Common Prefix【leetcode】
- 病毒 Worm.Logo.g
- MS OFFICE在LINUX上的视觉效果跟WINDOWS相差太大
- SIM868获取LBS位置
- 计算机图形学——简单图形绘制
- 最优化理论——线搜索技术·黄金分割法
- python算法练习——解空间的穷举搜索与Google方程式
- pycharm如何设置官方中文?pycharm如何汉化?pycharm终于支持官中了!!!
- ROS系列教程三:roslaunch文件及参数服务器
- 计算机操作处于挂起状态,计算机重新启动操作可能处于挂起状态怎么办?
- 操作系统——Liunx系统基础知识
- 使用driver.js实现新(xin)手(shou)导航,并使展示区域无法点击
热门文章
- vue调用手机相机相册_详解Vue调用手机相机和相册以及上传
- Latex设置字体大小
- 统计多维数组php_PHP多维数组中统计元素个数
- arm-linux-gcc libstdc .so.6,mini2440编译内核:usr/lib/libstdc++.so.6 not found
- +h eclipse中ctrl_Eclipse 常用的快捷键都有哪些?
- 深度学习框架Keras介绍及实战
- ajax的请求参数详解以及前后台交互详解
- Asp.Net MVC项目通过Git同步到新开发设备上后无法作为网站启动
- SpringMVC学习--文件上传
- 树——平衡二叉树插入和查找的JAVA实现