zoukankan      html  css  js  c++  java
  • 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;

    本文版权归七种武器和博客园共同所有,欢迎转载,但必须保留声明。并给出原文链接,谢谢合作

    Stay Hungry,Stay Foolish!
  • 相关阅读:
    Java 继承
    java 封装
    单选题
    实操题
    面试题
    Linux系统常用命令
    Shell脚本编写登陆小程序.sh
    利用shell脚本实现每隔60秒磁盘内存数据监控脚本
    shell脚本一键配置本地yum源
    shell点名脚本不重复人名
  • 原文地址:https://www.cnblogs.com/stay-9527/p/4146779.html
Copyright © 2011-2022 走看看