postgres--各种场景的SQL写法

按照某字段分组,并且每组中查出最新的那条记录

row_number(): 在其分区中的当前行号,从1计
over(partition by filed order by filed2),指定分组字段并对分区中的内容进行排序

窗口函数

 #分组查询,并且每组只查最新的记录
select *
from(
select * ,row_number() over (partition by b order by created_at desc) order_in_b from test 
	where a = 'aa'
)as temp
where order_in_b= 1 

在这里插入图片描述
结果:
在这里插入图片描述

将记录按某字段分组,再同时统计每组中的记录数量

统计type为false的记录,并以line_id分组,统计每个line_id有几个数据

SELECT line_id ,count(*)FROM "abnormity" WHERE (type = false) AND "abnormity"."deleted_at" IS NULL group by line_id

在这里插入图片描述

两张表,根据两张表的各自某个字段,把一张表的某个字段的值赋值给另一张表的某个字段

场景:

  1. 两张表:test1,test2
    test2
    在这里插入图片描述
    test1
    在这里插入图片描述
  2. 如果test2中记录的id等于test1中记录的id,那么将test1中的sn赋值到test2该记录的sn字段上

SQL

update 
	test2
set 
	sn= temp.sn
from 
	(select t1.sn,t1.id
		from test1 t1
		inner join test2 t2
		on t1.id = t2.id) as temp
where 
 	temp.id=test2.id

结果

test2
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值