将Pivot表中的查询输出与PostgreSQL相结合

将Pivot表中的查询输出与PostgreSQL相结合,sql,postgresql,datatable,count,pivot,Sql,Postgresql,Datatable,Count,Pivot,假设我有一个名为orders的表,如下所示: 身份证件 订购日期 通缉令 命令 1. 2020-11-29 19:12:44.417 2. 6. 1. 2020-11-29 20:12:44.417 2. 6. 1. 2020-11-30 23:37:28.692 8. 2. 1. 2020-11-30 23:37:28.692 2. 6. 您可以进行条件聚合avg()便于计算百分比: select extract (week from (order_date at time z

假设我有一个名为orders的表,如下所示:

身份证件 订购日期 通缉令 命令 1. 2020-11-29 19:12:44.417 2. 6. 1. 2020-11-29 20:12:44.417 2. 6. 1. 2020-11-30 23:37:28.692 8. 2. 1. 2020-11-30 23:37:28.692 2. 6.
您可以进行条件聚合
avg()
便于计算百分比:

select  
    extract (week   from (order_date at time zone 'MST' at time zone 'UTC') ) as "week", 
    extract (isodow from (order_date at time zone 'MST' at time zone 'UTC') ) as "day",
    extract (hour   from (order_date at time zone 'MST' at time zone 'UTC') ) as "hour",
    count(*) filter (where orders_wanted - orders_given >= 0) as count_orders_positive,
    count(*) filter (where orders_wanted - orders_given <  0) as count_orders_negative,
    100 * avg((orders_wanted - orders_given >= 0)::int) as percent_orders_positive
from orders
group by week, day, hour
order by week, day, hour;
选择
将(从时区“UTC”的时区“MST”的订单日期起的周)提取为“周”,
将(从时区“UTC”的时区“MST”的订单日期)中提取为“天”,
将(从时区“UTC”的时区“MST”的订单日期起的小时)提取为“小时”,
计数(*)过滤器(其中需要订单-给定订单>=0)为计数订单正,
计数(*)过滤器(其中需要订单-给定订单<0)作为计数订单负,
100*平均值((需要的订单-给定的订单>=0)::int)为订单正百分比
从命令
按周、日、时分组
按周、日、时排序;

如何从
通缉==2
给定==6
@s-man获得
计数=1
,谢谢你指出这一点。我的示例表出错了。我现在已经修好了。