系统
PostgreSQL 11.5 (Ubuntu 11.5-1.pgdg19.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0, 64-bit
问题
max
需要从表中返回一个值,product_id
基于available_count
.
Sql
select
product_id, store_id, max(available_count)
from
j_product_store_availability
group by
product_id,
store_id,
available_count
order by
product_id,
available_count desc,
store_id
--limit 1
结果
product_id store_id available_count
130475 4 7
130475 1 4
130475 8 4
130475 2 3
130475 5 3
130475 7 3
130475 10 3
130475 3 2
130475 6 2
130475 9 0
130479 1 0
130479 2 0
130479 3 0
...
它为每个返回行store_id
。只需要返回一个基于 的最大值available_count
。
预期结果
130475 4 7
130479 1 0
(next product_id)
...
谢谢。
解决方案(劳伦兹解决方案)
SELECT DISTINCT ON (product_id)
product_id,
store_id,
max(available_count)
from
j_product_store_availability
--where store_id = '7'
group by
product_id,
store_id,
available_count
ORDER by
product_id,
available_count desc;
如果使用非标准 PostgreSQL 构造没有问题,最简单的方法是