PGSQL怎么查询最近N天的数据及SQL语句实现替换字段内容的方法

56次阅读
没有评论

共计 2788 个字符,预计需要花费 7 分钟才能阅读完成。

这篇“PGSQL 怎么查询最近 N 天的数据及 SQL 语句实现替换字段内容的方法”文章的知识点大部分人都不太理解,所以丸趣 TV 小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PGSQL 怎么查询最近 N 天的数据及 SQL 语句实现替换字段内容的方法”文章吧。

1、用 SQL 查询最近 N 天的数据

思路:先获取当前的时间,然后更具当前时间去减去对应的天数,就可以得到需要的天数了。然后用这些天数作为条件,然后即可查询出需要多少天的数据了。

--  获取当前时间
SELECT CURRENT_TIMESTAMP;
--  或
SELECT now();
select CURRENT_TIMESTAMP :: DATE AS  当前日期 
SELECT CURRENT_DATE;
select CURRENT_TIMESTAMP :: TIME AS  当前时间 
SELECT CURRENT_TIME;

最近 N 天

--  最近 7 天
SELECT DATE( T ) AS DAY
generate_series ( ( CURRENT_TIMESTAMP - INTERVAL  6 day  ) :: DATE,CURRENT_TIMESTAMP :: DATE,  1 days  ) AS T ;

当然 6 day、1 day 这些也是可修改的;

-- 统计最近 30、7、昨天、今天的数据
SELECT
 count(*) AS AllData,
 count(*) filter ( WHERE create_time BETWEEN ( SELECT CURRENT_DATE - INTERVAL  30 day  ) AND CURRENT_DATE ) AS Last30DayData,
 count(*) filter ( WHERE create_time BETWEEN ( SELECT CURRENT_DATE - INTERVAL  7 day  ) AND CURRENT_DATE ) AS Last7DayData,
 count(*) filter ( WHERE create_time BETWEEN ( SELECT CURRENT_DATE - INTERVAL  1 day  ) AND CURRENT_DATE ) AS YesterdayData,
 count(*) filter ( WHERE create_time  = CURRENT_DATE ) AS todayAddData 
 table_name;

实例如下:查询 lic_plate 字段不为空和为空的最近 7 天的数据

--  查询 lic_plate 字段不为空的最近 7 天的数据
select count(tn.lic_plate) AS number,tn.create_time AS percentage
from table_name tn
where tn.create_time in (SELECT DATE(T) AS DAY
 FROM generate_series((CURRENT_TIMESTAMP - INTERVAL  6 day) :: DATE, CURRENT_TIMESTAMP :: DATE, 1 days ) AS T) AND lic_plate is not null
group by tn.create_time order by tn.create_time;
 
--  查询 lic_plate 字段为空的最近 7 天的数据
select count(id) AS number,CSQV.create_time AS percentage
from (select * from table_name tn where lic_plate is null) AS CSQV where CSQV.create_time in (SELECT DATE(T) AS DAY
 FROM generate_series((CURRENT_TIMESTAMP - INTERVAL  6 day) :: DATE, CURRENT_TIMESTAMP :: DATE, 1 days ) AS T)
group by CSQV.create_time;

2、用 SQL 语句实现替换字段里的内容

思路:使用替换函数替换即可

--  替换语句
update  表名  set  替换字段名  = replace(替换字段名, 被替换内容 , 替换内容 

实例如下:将 my_test 表的 test_content  字段内容进行替换

update my_test set test_content = replace(test_content, 1 , 18

替换函数:如果没有可以创建,创建函数如下:

-- replace all occurrences in string of old_substr with new_substr 
-- auto-generated definition
create function replace(text, text, text) returns text
 immutable
 strict
 cost 1
 language internal
$$begin
-- missing source code
end;$$;
 
 
comment on function replace(text, text, text) is  replace all occurrences in string of old_substr with new_substr

3、SQL 将查询结果赋值

-- 查询表数据,给 test_content 字段并赋值
select test_id,test_code, 测试数据  test_content from my_test;
-- 查询表数据给自定义  ABCD 字段   并赋值
select test_id,test_code, 测试数据  ABCD from my_test;

4、SQL 查询字段内容为 NULL 值时候赋值

select test_id,test_code,COALESCE(test_content, 测试数据) ABCD from my_test;
-- ||
select test_id,test_code,
 CASE
 WHEN test_content IS NOT NULL THEN test_content
 ELSE  测试数据 
 END ABCD from my_test;

以上就是关于“PGSQL 怎么查询最近 N 天的数据及 SQL 语句实现替换字段内容的方法”这篇文章的内容,相信大家都有了一定的了解,希望丸趣 TV 小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-13发表,共计2788字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)