Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как не учитывать 1 день / 8 сообщений из 8, страница 1 из 1
07.03.2019, 15:50
    #39783629
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не учитывать 1 день
База: name, rate, dt.
Каждый день записывается стоимость на товары, надо вытащить максимальную стоимость без учета самого первого дня. Первый день у всех товаров разный.

Так вытаскивает с учетом всех дней
Код: sql
1.
2.
3.
SELECT `name`, MAX(rate) AS max
FROM `base`
GROUP BY `name`



Должно быть что то то типа этого, но так не работает
Код: sql
1.
2.
3.
4.
SELECT `name`, MAX(rate) AS max, MIN(dt) AS min_dt
FROM `base`
WHERE `dt` > `min_dt` + INTERVAL 1 DAY
GROUP BY `name`
...
Рейтинг: 0 / 0
07.03.2019, 16:14
    #39783645
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не учитывать 1 день
yarnik,

Формализуйте понятие первого дня и задача будет решена.
...
Рейтинг: 0 / 0
07.03.2019, 16:21
    #39783649
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не учитывать 1 день
MIN(dt) и есть первый день, но задача не решена
...
Рейтинг: 0 / 0
07.03.2019, 17:06
    #39783680
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не учитывать 1 день
HAVING же
...
Рейтинг: 0 / 0
07.03.2019, 17:20
    #39783692
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не учитывать 1 день
vkle,

Код: sql
1.
2.
3.
4.
SELECT `name`, MAX(rate) AS max, MIN(dt) AS min_dt
FROM `base`
GROUP BY `name`
HAVING MIN(dt) < `dt`


#1054 - Unknown column 'dt' in 'having clause'
...
Рейтинг: 0 / 0
07.03.2019, 22:48
    #39783789
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не учитывать 1 день
yarnikMIN(dt) и есть первый день, но задача не решенаНет, это не формализация, это черти-что. Вы матанализ в ВУЗе проходили?

Формализация, например, это так:
Для каждого товара выбрать максимальную стоимость за все время, за исключением дней с наименьшей датой для данного конкретного товара.
Тогда решение будет такое:
Код: sql
1.
2.
3.
4.
SELECT `name`, MAX(rate) AS max_rate
FROM `base` b
  JOIN (SELECT `name`, MIN(dt) AS min_dt FROM `base` GROUP BY `name`) t ON b.`name`=t.`name` AND b.dt>t.min_dt
GROUP BY `name`



Кстати, а что делать, если для какого-то товара будет две записи с минимальной датой? Обе надо игнорировать?
...
Рейтинг: 0 / 0
10.03.2019, 22:28
    #39784313
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не учитывать 1 день
благодарю, не учил если честно...
...
Рейтинг: 0 / 0
14.03.2019, 14:34
    #39786047
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не учитывать 1 день
А если понадобится исключить 2 дня с наименьшей датой. Тогда как?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как не учитывать 1 день / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]