Sql 如何使用每个磁贴的最大值和该磁贴中的ITEN数创建结果集
如果我有一张这样的桌子Sql 如何使用每个磁贴的最大值和该磁贴中的ITEN数创建结果集,sql,mariadb,postgresql-9.6,Sql,Mariadb,Postgresql 9.6,如果我有一张这样的桌子 id product_name price 1 product_1 5 2 product_2 10 3 product_3 100 4 product_4 200 5 product_5 9000 如果执行如下查询: select price, ntile(3) over(order by price) as rank from products order by pric
id product_name price
1 product_1 5
2 product_2 10
3 product_3 100
4 product_4 200
5 product_5 9000
如果执行如下查询:
select price, ntile(3) over(order by price) as rank from products order by price.
它将产生大致如下的结果:
id product_name price rank
1 product_1 5 1
2 product_2 10 1
3 product_3 100 2
4 product_4 200 2
5 product_5 9000 3
但是我想进一步扩展一下,得到每个图块的最大值和图块上的ITEN数
price items
10 2
200 2
9000 1 // I think I won't use the last tile max value, but it's here anyway.
我没有得到我想要的结果的知识,所以我不需要什么帮助。使用聚合怎么样
select max(price), count(*)
from (select price, ntile(3) over (order by price) as rank
from products
) p
group by rank
order by price
需要注意的是:
ntile()
会创建大小相等的存储箱,因此边界值可能会在多个存储箱之间分割。它是哪一个?MariaDB还是PostgreSQL?两者都可以,我正在使用在线工具运行查询。