Oracle 分组统计,抽取每组前十

/**
2018年6月14日 潮州
ORACEL 统计2017年用电量,按行业分类抽取用电量前十
*/
select *
from (select t.yhbh 用户编号,
t.yhmc 用户名称,
t.jldbh 计量点编号,
(select m.dmbmmc
from npmis_xt_dmbm m
where m.dmfl = ‘YDLXDM‘
and m.dmbm = t.ydlbdm) 用电类型,
(select m.dmbmmc
from npmis_xt_dmbm m
where m.dmbmbs = (select m.sjdmbmbs
from npmis_xt_dmbm m
where m.dmfl = ‘HYFLDM‘
and m.dmbm = t.hyfldm)) 上级行业分类,
(select m.dmbmmc
from npmis_xt_dmbm m
where m.dmfl = ‘HYFLDM‘
and m.dmbm = t.hyfldm) 行业分类,
sum(t.jfdl) 总计费电量,
row_number() over(partition by t.hyfldm order by sum(t.jfdl) desc) 本行业排名
from npmis_hs_jldxx t
where t.dfny like ‘2017%‘
and t.ydlbdm in (‘100‘, ‘200‘, ‘260‘, ‘300‘) /**用电类别为:大工业、非普通工业、非工业、商业*/
and t.jfdl <> 0 /**计费电量不为0*/
and t.yhztdm <> ‘2‘ /**用户状态不为销户*/
group by t.yhbh, t.yhmc, t.jldbh, t.ydlbdm, t.hyfldm
having sum(t.jfdl) > 500000
order by 总计费电量)
where 本行业排名 < 11;

原文地址:https://www.cnblogs.com/fooxer/p/9184242.html

时间: 2024-11-12 16:49:20

Oracle 分组统计,抽取每组前十的相关文章

MySQL 分组后取每组前N条数据

与oracle的 rownumber() over(partition by xxx  order by xxx )语句类似,即:对表分组后排序 创建测试emp表 DROP TABLE IF EXISTS emp; CREATE TABLE emp ( empno decimal(4,0) NOT NULL, ename varchar(10) DEFAULT NULL, job varchar(9) DEFAULT NULL, mgr decimal(4,0) DEFAULT NULL, hi

oracle分组后取每组第一条数据

数据格式: 分组取第一条的效果: sql语句: SELECT * FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC)rn, test1.* FROM test1) WHERE rn = 1 ;

oracle分组统计某列逗号隔开数据

所有版本的oracle都可以使用select wm_concat(name) as name from user; 但如果是oracle11g,使用select listagg(name, ',') within group( order by name) as name from user;效率更高,官方也更推荐这种写法.

Oracle按不同时间分组统计

Oracle按不同时间分组统计 Oracle按不同时间分组统计的sql 如下表table1: 日期(exportDate) 数量(amount) -------------- ----------- 14-2月 -08 20 10-3月 -08 2 14-4月 -08 6 14-6月 -08 75 24-10月-09 23 14-11月-09 45 04-8月 -10 5 04-9月 -10 44 04-10月-10 88 注意:为了显示更直观,如下查询已皆按相应分组排序 1.按年份分组 sel

组函数及分组统计

分组函数 SQL中常用的分组函数 Count(): 计数 Max():求最大值 Min():求最小值 Avg():求平均值 Sum():求和 -- 统计emp表中的人数 select count(*) from emp; -- 统计获得奖金的人数 select count(comm) from emp; -- 求所有雇员的最低工资 select min(sal) from emp; -- 求所有雇员的最高工资 select max(sal) from emp; -- 求部门编号为20的雇员的平均

SQL分组取每组前一(或几)条记录(排名)

mysql分组取每组前几条记录(排名) 附group by与order by的研究 http://www.jb51.net/article/31590.htm --按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: name val memo a 2 a2(a的第二个值) a 1 a1--a的第一个值 a 3 a3:a的第三个值 b 1 b1--b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b 5 b5b5b5b5b5 */ --创建表

Oracle按时间段分组统计

想要按时间段分组查询,首先要了解level,connect by,oracle时间的加减. 关于level这里不多说,我只写出一个查询语句: ----level 是一个伪例 select level from dual connect by level <=10 ---结果: 1 2 3 4 5 6 7 8 9 10 关于connect by可以看 http://www.cnblogs.com/johnnyking39/articles/1155497.html oracle时间的加减看看试一下

python统计前十出现最多的词

一.描述 这是一道python面试题: "一个可读文件,有一万行,一行只有一个单词,单词可以重复的,求出这一万行中出现频繁次数最多的前10个单词" 二.思路 先读取文件变为列表,再用集合去重得到一个参照的列表,逆排序取前10(最大即最多的的10个元素),再用参照列表中的每个元素从文件中去统计,把参照列表中的元素作为键,统计到的结果为值,放入字典,打印出来. 三.代码 #!/usr/bin/python #coding:utf-8 all_C = [] with open("w

Oracle数据库从入门到精通-分组统计查询

视频课程:李兴华 Oracle从入门到精通 视频课程学习者:阳光罗诺 视频来源:51CTO学院 整体内容: 统计函数的使用 分组统计查询的实现 对分组的数据过滤 统计函数 在之前我们就学习过一个COUNT()函数,这个函数的主要作用是统计一张表之中的数据量的个数.和它功能与之类似的常用函数有五个: 统计个数COUNT():根据表中的实际数据量返回结果. 求和SUM():是针对于数字的统计 平均值AVG():是针对数字的统计 最小值MIN():各种数据类型都支持. 最大值MAX():各种数据类型都