我很多年前学习过SQL,但是现在我的知识非常生锈。我不会发布任何代码,因为我的尝试还没有结束。我正在使用MySQL。
如果有一个包含产品的表
product_id price
1 50
2 70
3 100
4 120
5 900
6 1100
我想在网页上生成这样的链接
less than $70 //so that it narrows the result to ABOUT 30%
between $70 and $120 //so that it narrows the result to ABOUT 30%
more than $120 //so that it narrows the result to ABOUT 30%
我认为我需要一个返回最小值和中等值的查询
使用示例表,如果查询返回最小值(70),则该值以下的产品将占30%。一个中等价值的产品,其中30%将介于最小值(70)和中等价值(120)之间。另外,有30%的产品会高于中值(120)。
这是我的主意。我不需要工作代码。我只想要一些示例查询来帮助我“开始”。
答案 0 :(得分:0)
您可以通过以下方式解决此问题
使用:
Select MIN(middleProducts.price) AS price30Percent, MAX(middleProducts.price) AS price70Percent
from
(
SELECT products.*, @counter := @counter +1 AS counter
FROM (select @counter:=0) initvar, products
ORDER BY price
) middleProducts
where (30/100 * @counter) < counter AND counter <= (70/100 * @counter)
ORDER BY price
使用 price30Percent 和 price70Percent 生成链接。
参考
答案 1 :(得分:-1)
您可以在查询中使用“ case”开始,它看起来应如下所示:
select `product_id`, `price`, case when price < 70 then 'less than $70'
when price between 70 and 120 then 'between $70 and $120'
when price >120 then 'more than $120' end as `Price category`
from `table`;
这样,您将获得一组显示每种产品价格类别的数据,然后可以按照需要的方式进行排列。