Запрос для генерации 2 значений на основе диапазона значений столбца - PullRequest
1 голос
/ 15 марта 2019

Я изучал 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).

Это моя идея.Я не хочу рабочий код.Мне просто нужен пример запроса, который поможет мне начать.

Ответы [ 2 ]

0 голосов
/ 17 марта 2019

Вы можете решить эту проблему с помощью

  • Выбор продуктов со средней ценой и
  • нахождение MIN и MAX цены

Использование:

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

Использование цена 30 процентов & цена 70 процентов для создания ссылок.

Ссылки

0 голосов
/ 15 марта 2019

Вы можете начать с использования "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`;

Таким образом, вы получите набор данных, показывающий ценовую категорию каждого товара, затемВы можете расположить их так, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...