查询同一组的最大最小值及明细
数据库环境:Oracle11g
现有某监测站的监测数据如下表。要求:查询出每个测站的水位最大最小值及最大最小值对应的时间,
如果最大、最小值存在重复,则只显示重复数据中最新时间的那条数据。
实现思路:
- 根据测站和水位分组,按最新时间排序,有重复的只取最新时间的数据
- 分别求得最大、最小值的所在数据行,然后union
准备建表,导入数据的脚本
create table dse_river_r(stcd varchar2(8),tm date,z number(6,2))insert into dse_river_r values('80520508',to_date('2013-07-01 09:00:00','yyyy-mm-dd hh24:mi:ss'),10.02); insert into dse_river_r values('80520508',to_date('2013-07-01 08:00:00','yyyy-mm-dd hh24:mi:ss'),9.98); insert into dse_river_r values('80520508',to_date('2013-07-01 07:00:00','yyyy-mm-dd hh24:mi:ss'),10.02); insert into dse_river_r values('60407758',to_date('2013-07-01 09:00:00','yyyy-mm-dd hh24:mi:ss'),9.00); insert into dse_river_r values('60407758',to_date('2013-07-01 08:00:00','yyyy-mm-dd hh24:mi:ss'),10.00); insert into dse_river_r values('60407758',to_date('2013-07-01 07:00:00','yyyy-mm-dd hh24:mi:ss'),12.00); insert into dse_river_r values('60407725',to_date('2013-07-01 09:00:00','yyyy-mm-dd hh24:mi:ss'),9.42); insert into dse_river_r values('60407725',to_date('2013-07-01 08:00:00','yyyy-mm-dd hh24:mi:ss'),9.42); insert into dse_river_r values('60407725',to_date('2013-07-01 07:00:00','yyyy-mm-dd hh24:mi:ss'),9.42); insert into dse_river_r values('60507426',to_date('2013-07-01 10:00:00','yyyy-mm-dd hh24:mi:ss'),12.00); insert into dse_river_r values('60507426',to_date('2013-07-01 09:00:00','yyyy-mm-dd hh24:mi:ss'),8.32); insert into dse_river_r values('60507426',to_date('2013-07-01 08:00:00','yyyy-mm-dd hh24:mi:ss'),12.00); insert into dse_river_r values('60507426',to_date('2013-07-01 07:00:00','yyyy-mm-dd hh24:mi:ss'),9.10);
View Code
数据有了,现在我们来实现这个查询
1.过滤重复数据
WITH x0AS (SELECT STCD,TM,Z,ROW_NUMBER () OVER (PARTITION BY stcd, z ORDER BY tm DESC)AS rnFROM dse_river_r),x1AS (SELECT STCD, TM, ZFROM x0WHERE rn = 1)
View Code
2.union最大、最小值所在行的数据集
SELECT STCD, tm, zFROM (SELECT STCD,tm,z,MAX (z) OVER (PARTITION BY stcd) AS z_maxFROM x1)WHERE z = z_max UNION SELECT STCD, tm, zFROM (SELECT STCD,tm,z,MIN (z) OVER (PARTITION BY stcd) AS z_minFROM x1)WHERE z = z_min
View Code
当然,我们也可以对union操作近一步简化,直接去掉union操作
WITH x0AS (SELECT STCD,TM,Z,ROW_NUMBER () OVER (PARTITION BY stcd, z ORDER BY tm DESC)AS rnFROM dse_river_r),x1AS (SELECT STCD,TM,Z,MAX (z) OVER (PARTITION BY stcd) AS z_max,MIN (z) OVER (PARTITION BY stcd) AS z_minFROM x0WHERE rn = 1) SELECT STCD, TM, ZFROM x1WHERE z IN (z_max, z_min)
View Code
好了,现在展示一下查询结果
(本文完)
转载于:https://www.cnblogs.com/boss-he/p/4713011.html
查询同一组的最大最小值及明细相关推荐
- 输入整数n(0<=n<=1000),紧接着在下一行连续输入n个数。随后输出这一组数的最小值和最大值。
标题 输入整数n(0<=n<=1000),紧接着在下一行连续输入n个数.随后输出这一组数的最小值和最大值. ##解决方法 根据题意输入n个数可以用循环思想,并用if语句进行比较判断,最后进 ...
- 10-209 在订单表中查询运费的最大值和最小值
分数 3 全屏浏览题目 切换布局 作者 刘冬霞 单位 山东理工大学 在订单表中查询运费的最大值和最小值. 表结构: 订单(订单编号 文本型,顾客编号 文本型,员工编号 文本型,订单日期 日期型,运费 ...
- 学生成绩查询(查最大值,最小值,平均值,升序,降序)
调用方法来实现各个功能,并建立起一种交互界面 让用户选择,进行怎么样的功能 #include<stdio.h> #include<stdlib.h> int main() {f ...
- 求一组数据的最小值(C语言)
[问题描述]输入一个正整数n,再输入n个整数,输出其中最小的值. [输入形式]先输入一个整数n,再根据n,输入n个数 [输出形式]输出最小值,形式:min=? [样例输入] 5 10 22 4 67 ...
- oracle 查询字段中文注释,oracle 查询表字段明细、字段注释、表注释
查詢表字段明細 select column_name,data_type,data_length,DATA_PRECISION ,DATA_SCALE from all_tab_columns wh ...
- 如何查询本人医保就医明细
参保人凭本人的社会保障卡(或医疗保险卡)或身份证到医保中心服务窗口提出查询本人的就医明细,医保窗口工作人员在验证查询人为持证人本人后,通过查询系统,在输入参保人社保卡号(医保卡号或身份证号,三选一)后 ...
- 互联网金融平台——银行交易明细查询和报警机制
一.关于前置机的报警机制: 1 .通道组每日巡检前置机的运行是否出现假死等问题,巡检每两个小时一次,上午 10 点至晚八点: 2 . 关键词监控,已经出现过假死的前置机或者 usb 不 ...
- mysql 名字分组查询id_mysql进阶5:分组查询
/*语法: select 分组函数 列(要求出现在group by的后面) from 表 [where 筛选条件] group by 分组的列表 [order by 子句] 注意:查询列表必须特殊,要 ...
- mysql语句 查询前5个_MySQL 查询语句--------------进阶5:分组查询
#进阶5:分组查询 /* select 分组函数,列(要求出现在group by的后面) from 表 [where 筛选条件] group by 分组的列表 [order by 子句] 注意: 查询 ...
- MySQL命令(二)| 表的增删查改、聚合函数(复合函数)、联合查询
文章目录 新增 (Create) 全列插入 指定列插入 查询 (Retrieve) 全列查询 指定列查询 条件查询 关系元素运算符 模糊查询 分页查询 去重:DISTINCT 别名:AS 升序 or ...
最新文章
- python nginx日志分析_Nginx日志分析及脚本编写
- 序列化和反序列化的概念与延伸【详细解释 + 样例演示】
- php 屏蔽deprecated,新人求教PHP高手,Deprecated?
- boost跨平台 c++_跨平台C++整数类型 之一 固定宽度整数(boost和C++11)
- js和jquery书籍
- 零距离泛目录站群开源版源码
- libevent for android
- 380免费云存储_从四个方面分析:云存储服务的特点、影响
- bash算术求值和errexit陷阱
- 杭州市建筑物矢量数据(Shp格式+带高度)
- 灵格斯Lingoes词典及浏览器插件实现屏幕取词等功能的配置使用方法
- 在电脑上如何快速制作一寸照片?在线一键制作工具推荐给你
- 《MFC 控件透明处理》
- 【数据分析案例】如何定义你的“亲密关系”
- url 与 domain
- cogs 347 地震 splay
- 尚硅谷JavaWeb笔记——Filter过滤器(了解过滤器,看着一篇就够了)
- 【Segmentation】
- 处女座和小姐姐(模拟)
- B站硬核up主稚晖君:对于有志学习嵌入式开发的软件工程师,我有这些建议!...
热门文章
- dns服务期搭建使用_DNS服务器搭建
- python批量命名文件_用python实现批量重命名文件的代码
- python脚本实现ipv6的ddns功能
- 引入ELK前需要知道的“坑”(上)
- GAN 生成mnist数据
- linux 内核参数解释整理
- 非支架生成的情况下,验证错误信息输出方法,%= f.error_messages %错误
- 使用5502自带的UART口发送数据乱码的问题
- 浅析GestureDetector
- Apache RewriteCond on HTTP_COOKIE