当前位置:实例文章 » 其他实例» [文章]cte 使用实例:排除节假日及周六日,按照工作时段统计时间差

cte 使用实例:排除节假日及周六日,按照工作时段统计时间差

发布人:shili8 发布时间:2025-01-16 18:19 阅读次数:0

**CTE(Common Table Expression)使用实例**

CTE(Common Table Expression)是一种临时结果集,可以在 FROM 子句中使用一次或多次。它类似于子查询,但更方便、更高效。

###1. 排除节假日及周六日我们可以使用 CTE 来排除节假日和周六日的数据。

sqlWITH -- 定义一个临时结果集,包含所有工作日 work_days AS (
 SELECT DATE '2022-01-01' + INTERVAL '1 day' * ROW_NUMBER() OVER (ORDER BY id) AS date FROM information_schema.tables t1,
 information_schema.columns c1 WHERE TRUE ),
 -- 定义一个临时结果集,包含节假日和周六日 holidays_and_weekends AS (
 SELECT DATE '2022-01-01' + INTERVAL '1 day' * ROW_NUMBER() OVER (ORDER BY id) AS date FROM information_schema.tables t1,
 information_schema.columns c1 WHERE -- 节假日和周六日的逻辑 MOD(WEEKDAY(DATE '2022-01-01' + INTERVAL '1 day' * ROW_NUMBER() OVER (ORDER BY id)),7) IN (0,6)
 )

-- 使用 CTE 来排除节假日和周六日的数据SELECT *
FROM work_days wWHERE date NOT IN (SELECT date FROM holidays_and_weekends);


###2. 按照工作时段统计时间差我们可以使用 CTE 来按照工作时段统计时间差。

sqlWITH -- 定义一个临时结果集,包含所有数据 all_data AS (
 SELECT id,
 timestamp,
 DATEDIFF(HOUR, timestamp, NOW()) /8 AS work_hour FROM your_table )

-- 使用 CTE 来按照工作时段统计时间差SELECT work_hour,
 COUNT(*) AS count,
 SUM(DATEDIFF(SECOND, timestamp, NOW())) /1000 AS total_timeFROM all_dataGROUP BY work_hour;


###3. 不少于1500字我们可以使用 CTE 来不少于1500字的数据。

sqlWITH -- 定义一个临时结果集,包含所有数据 all_data AS (
 SELECT id,
 content,
 LENGTH(content) /1000 AS word_count FROM your_table )

-- 使用 CTE 来不少于1500字的数据SELECT *
FROM all_dataWHERE word_count >=1.5;


###4. 有部分代码示例和代码注释我们可以使用 CTE 来有部分代码示例和代码注释。

sqlWITH -- 定义一个临时结果集,包含所有数据 all_data AS (
 SELECT id,
 code,
 comment,
 LENGTH(code) /1000 AS line_count FROM your_table )

-- 使用 CTE 来有部分代码示例和代码注释SELECT *
FROM all_dataWHERE line_count >=1.5;


以上是使用 CTE 的实例,包括排除节假日及周六日、按照工作时段统计时间差、不少于1500字以及有部分代码示例和代码注释。这些实例展示了 CTE 在数据处理中的应用和优势。

相关标签:前端数据库
其他信息

其他资源

Top