Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Postgres:获取多对多关系表中的最小和最大行数_Sql_Postgresql_Hibernate_Jpa_Ejb - Fatal编程技术网

Sql Postgres:获取多对多关系表中的最小和最大行数

Sql Postgres:获取多对多关系表中的最小和最大行数,sql,postgresql,hibernate,jpa,ejb,Sql,Postgresql,Hibernate,Jpa,Ejb,我有RFQ(报价请求)和供应商投标金额的对应表 询价供应商映射: id rfq_id(FK) vendor_id(FK) amount --------------------------------------- 1 1 1 100 2 1 2 50 3 2 1 200 4 2 3

我有RFQ(报价请求)和供应商投标金额的对应表

询价供应商映射:

id  rfq_id(FK)  vendor_id(FK)   amount
---------------------------------------

 1      1           1            100
 2      1           2            50
 3      2           1            200
 4      2           3            300
 5      2           2            40
 6      3           4            70
 7      3           1            90
 8      3           2            250
 9      4           3            30
 10     5           1            500
vendor_id   min_bid_count   max_bid_count
-----------------------------------------
    1           1               2
    2           2               1
    3           1               2
    4           1               0
在上表中,我想分析供应商提交每个RFQ的最低和最高投标次数

预期输出:

id  rfq_id(FK)  vendor_id(FK)   amount
---------------------------------------

 1      1           1            100
 2      1           2            50
 3      2           1            200
 4      2           3            300
 5      2           2            40
 6      3           4            70
 7      3           1            90
 8      3           2            250
 9      4           3            30
 10     5           1            500
vendor_id   min_bid_count   max_bid_count
-----------------------------------------
    1           1               2
    2           2               1
    3           1               2
    4           1               0

通过窗口函数将供应商的金额与最小值和最大值进行比较,并在外部查询级别上运行条件计数:

SELECT vendor_id
     , count(min_bid OR NULL) AS min_bid_count
     , count(max_bid OR NULL) AS max_bid_count
FROM  (
   SELECT vendor_id
        , amount = min(amount) OVER w AS min_bid
        , amount = max(amount) OVER w AS max_bid
   FROM   rfq_vendor_mapping
   WINDOW w AS (PARTITION BY rfq_id)
   ) sub
GROUP  BY 1
ORDER  BY 1;

显然,任何SQL都“在JPA中受支持”,如果您希望使用JPQL,那么您必须提供这些类供任何人评论。这不是查询写入服务。请查看