首页 > 代码库 > oracle笔记
oracle笔记
今天看到博客园的一个sql题目,《这道SQL笔试题你会怎么写》
本文版权归七种武器和博客园共同所有,欢迎转载,但必须保留声明。并给出原文链接,谢谢合作
写了很久不知道怎么用获取组函数的第一条数据。然后查资料看评论,才发现需要 ROW_NUMBER() OVER()函数。
才发现这段时间接触sql太少了。写sql好生疏,在这里就总结下常用的分析函数
1.ROW_NUMBER() OVER()函数
row_number() over ([partition by col1] order by col2) ) as 别名
表示根据col1分组,在分组内部根据 col2排序
而这个“别名”的值就表示每组内部排序后的顺序编号(组内连续的唯一的),
[partition by col1] 可省略。
2.DBMS_RANDOM.value(num1,num2)获取num1,和num2间的随机数
3.组函数 MAX(),MIN(),AVG(),SUM()___GROUP BY___HAVING MIN()>100
1 DECLARE 2 I INT := 1; 3 BEGIN 4 LOOP 5 INSERT INTO T_ACCOUNT VALUES (I, I * 4); 6 INSERT INTO T_TRANS 7 VALUES 8 (I, SYSDATE, ROUND(DBMS_RANDOM.VALUE(0, 2000))); 9 EXIT WHEN I = 1000;10 I := I + 1;11 END LOOP;12 END;
SELECT T.ACCOUNT_ID, TT.SALES, TT.TRANS_TIME FROM T_ACCOUNT T, (SELECT T.ACCOUNT_ID, T.TRANS_TIME, T.SALES, ROW_NUMBER() OVER(PARTITION BY T.ACCOUNT_ID ORDER BY T.TRANS_TIME) RN FROM T_TRANS T) TT WHERE T.ACCOUNT_ID = TT.ACCOUNT_ID(+) AND TT.RN = 1 AND TT.SALES > 1000;
本文版权归七种武器和博客园共同所有,欢迎转载,但必须保留声明。并给出原文链接,谢谢合作
oracle笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。