您的位置:首页 > 数据库

PostgreSQL with子句使用

2017-05-08 15:19 106 查看
PostgreSQL提供的一种方法,用于写一个大的查询中使用的辅助报表与查询,能使复杂和大型查询简单易读。

1:with子句的使用

使用现有数据库查询,查询在2017.05.01号0点到2017.05.08号0点之间的充值玩家的id,sid,期间充值总数num。

命令如下:

with u as (select id, sum(amount) as num from pay where pay_time >= 1493568000 and pay_time < 1494172800 group by id) select u.id, pinfo.sid, u.num from u join pinfo on u.id=pinfo.id;

解析:

使用with查询出相关玩家的id和期间充值总数num,

再查询出对应id玩家的sid。

2:多个with子句的使用

使用现有数据查询,在1的基础上,增加查询这些玩家到

2017.05.08号0点的历史充值总数total。

with u1 as (select id, sum(amount) as num from pay where pay_time >= 1493568000 and pay_time < 1494172800 group by id), u2 as(select id, sum(amount) as total from pay where pay_time < 1494172800 group by id) select u1.id, pinfo.sid, u1.num, u2.total from u1, u2, pinfo where u2.id = u1.id and pinfo.id = u1.id;

解析:

使用with查询出固定时间内充值的玩家id和期间充值总数,

使用with查询出指定时间之前充值的玩家的id和历史充值总数,

再查询出u1中所有id对应的u2中的数据,以及pinfo中的sid。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息