第一次使用ORACLE,下面是部分查询函数

2025 年 5 月 12 日 星期一
1

第一次使用ORACLE,下面是部分查询函数

ORACLE

时间查询(某月,某天,某年)

  • 使用TRUNC(data,fmt)

    • MM 使时间格式化为某月开始
    • DD 使时间格式化为某天开始
    • YY 使时间格式化为某年开始

    参考:

    SELECT 
    *
    FROM T_GOODS_TRAIN_LOG tg
    WHERE CREATE_USER = ''
    and TRUNC(CREATE_TIME, 'MM') = TRUNC(SYSDATE, 'MM')

    该sql意思是查询当前月的数据

OVER()使用

OVER 关键字后面会跟随窗口函数的定义,包括窗口分区(PARTITION BY)、排序(ORDER BY)、窗口帧(ROWS 或 RANGE)等子句。基本语法如下:

SELECT
    column1,
    column2,
    ...,
    window_function() OVER (
        [PARTITION BY partition_expression]
        [ORDER BY order_expression [ASC | DESC]]
        [window_frame_clause]
    ) AS window_function_alias
FROM
    table_name;

例子:

假设我们有一个 sales 表,包含销售数据,我们希望计算每个销售员的销售总额,并且显示每个销售额与该销售员的平均销售额的差距。在这种情况下,可以使用 OVER 和窗口函数来实现: SELECT salesperson_id, total_sales, AVG(total_sales) OVER (PARTITION BY salesperson_id) AS avg_sales, total_sales - AVG(total_sales) OVER (PARTITION BY salesperson_id) AS sales_diff FROM sales; 在这个查询中:

  • PARTITION BY salesperson_id 指定了窗口函数的分区,即按 salesperson_id 分组计算。
  • AVG(total_sales) OVER (PARTITION BY salesperson_id) 是一个窗口函数,计算每个 salesperson_id 的平均销售额。
  • total_sales - AVG(total_sales) OVER (PARTITION BY salesperson_id) 则计算了每条记录的销售额与对应 salesperson_id 的平均销售额之差。

    常用窗口函数

    常见的 SQL 窗口函数包括:

  • COUNT():统计数量。
  • ROW_NUMBER():为每一行分配一个唯一的整数序号。
  • RANK() 和 DENSE_RANK():计算排名,区别在于处理并列项的方式。
  • SUM()、AVG()、MIN()、MAX():计算指定列的总和、平均值、最小值、最大值等。
  • LEAD() 和 LAG():获取某行之后或之前的行的数据。

#

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...