文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-03-09 18:35

关注

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

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

update my_test set test_content = replace(test_content,'1','18');

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

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

-- 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
as
$$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语句实现替换字段内容的方法”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯