【发布时间】:2020-01-25 00:51:35
【问题描述】:
我正在尝试使用 ~300k 行表中的订单来查找商品价格的第 95 个百分位(也是最高购买量)。
我已经成功地找到了使用此代码的单件商品的第 95 个百分位和最高购买量:
SELECT type_id,
Max(price) AS buy,
Min(price) AS '95th% buy'
FROM (SELECT *,
( Row_number()
OVER (
partition BY type_id
ORDER BY price DESC) ) AS rownr
FROM orderbuffertest AS rownr
WHERE is_buy_order = 1
ORDER BY ( Row_number()
OVER (
partition BY type_id
ORDER BY price DESC) ) ASC) AS t1
WHERE t1.type_id = 44992
AND t1.rownr < (SELECT Count(*)
FROM orderbuffertest
WHERE is_buy_order = 1
AND type_id = 44992) * 0.05;
但是,现在我正在尝试GROUP BY type_id,它破坏了我所有的价值观。
有人知道如何GROUP BY type_id 这个查询吗?甚至可以改进原来的方法?
提前谢谢你,
TheJazzle
附言。这是我的数据库的链接,如果您想弄乱/测试它:https://gofile.io/?c=Ga6ODr
【问题讨论】:
标签: mysql sql mariadb mariadb-10.2