在Excel中运行SQL时重新创建NTILE函数
我正在从在Excel中创建报表的传统方式进行转换,在Excel中运行SQL时,我一直坚持重新创建NTILE函数(因为那里不存在NTILE函数),即使在Oracle PL/SQL Developer中运行时,我成功地重新创建了NTILE函数 传统方式:在Excel中运行SQL时重新创建NTILE函数,sql,excel,oracle,plsqldeveloper,Sql,Excel,Oracle,Plsqldeveloper,我正在从在Excel中创建报表的传统方式进行转换,在Excel中运行SQL时,我一直坚持重新创建NTILE函数(因为那里不存在NTILE函数),即使在Oracle PL/SQL Developer中运行时,我成功地重新创建了NTILE函数 传统方式: SQL脚本存储在Excel工作表中 我编写宏连接到Oracle数据库,然后用SQL脚本打开一个记录集,并将该记录集复制到另一个Excel工作表 新方式: SQL脚本存储在Excel工作表中 Oracle数据库中的表保存为硬盘上的csv文件 我
- SQL脚本存储在Excel工作表中
- 我编写宏连接到Oracle数据库,然后用SQL脚本打开一个记录集,并将该记录集复制到另一个Excel工作表
- SQL脚本存储在Excel工作表中
- Oracle数据库中的表保存为硬盘上的csv文件
- 我编写宏以使用Microsoft.Jet.OLEDB.4.0连接到csv文件(而不是打开它),然后使用SQL脚本打开一个记录集,并将该记录集复制到另一个Excel工作表
创建表testntile
(
appid编号(2),
样品VARCHAR2(50),
分数(3)
);
全部插入
转换为testntile(appid、sample、score)值(5,'A',4)
转换为testntile(appid、sample、score)值(2,'B',6)
转换为testntile(appid、sample、score)值(3,'C',8)
转换为testntile(appid、sample、score)值(1,'C',1)
转换为testntile(appid、sample、score)值(4,'B',2)
转换为testntile(appid、sample、score)值(8,'C',3)
转换为testntile(appid、sample、score)值(6,'C',8)
转换为testntile(appid、sample、score)值(9,'B',9)
转换为testntile(appid、sample、score)值(7,'C',7)
转换为testntile(appid、sample、score)值(10,'B',5)
转换为testntile(appid、sample、score)值(14,'A',2)
转换为testntile(appid、sample、score)值(12,'C',7)
转换为testntile(appid、sample、score)值(13,'C',7)
转换为testntile(appid、sample、score)值(11,'A',9)
转换为testntile(appid、sample、score)值(15,'C',3)
转换为testntile(appid、sample、score)值(16,'C',12)
转换为testntile(appid、sample、score)值(18,'C',12)
转换为testntile(appid、sample、score)值(17,'C',16)
转换为testntile(appid、sample、score)值(19,'C',12)
转换为testntile(appid、sample、score)值(20,'D',14)
转换为testntile(appid、sample、score)值(21,'D',11)
从双重选择中选择*;
犯罪
--期望的最终结果
挑选
第(3)项超过(按样本顺序按分数划分)范围列表,
s、 *
来自testntile s;
--Oracle中的可重构函数
--(作为在Excel SQL中重新创建NTILE函数的中间步骤)
挑选
余数时的情况(
(选择计数(t2.appid)
来自testntile t2
其中t2.sample=t1.sample)
,3) 0
然后在((选择count(t2.appid))时使用CASE
来自testntile t2
其中t2.sample=t1.sample)/3)<1
然后(选择计数(*)+1
来自testntile t2
其中t2.sample=t1.sample
和(t2.score