ROW_NUMBER() OVER()函数用法解析:
语法:
row-number() over(partition by 分组列字段 order by 排序列字段 desc)
row_number() over()分组排序功能:
在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。
例子:通过id进行分组,通过salary进行排序。
with tabs as 是创建一张临时表
with tabs as
(
select ROW_NUMBER() over(partition by customerID order by insDT)
as rows,customerID,totalPrice, DID from OP_Order
)
select * from tabs where totalprice >10000;
postgresql 聚合函数:
1.
array_agg(expression)
把表达式变成一个数组 一般配合 array_to_string() 函数使用
select array_agg(id) from tbl_test;
结果: {1,2,3}
2.
string_agg(expression, 分割符)
直接把一个表达式变成字符串
select string_agg(name,',') from tbl_test;
结果: 张三,李四,王五
3.
#不仅可以去重,还可以排序
select array_agg(distinct deptno order by deptno desc) from jinbo.employee;
array_agg
-----------
{30,20}
(1 row
使用像上面单个聚合函数的时候就不需要添加group by 其他的形式需要在group by 后面加上所添加的聚合函数。
例如:
select count(id) from t_test 就不需要加group by
如果需要查询添加的时候需要另外的字段,就需要添加group by
select count(id) , name ,age from t_test group by id ;