第一次使用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():获取某行之后或之前的行的数据。