powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как не учитывать 1 день
8 сообщений из 8, страница 1 из 1
Как не учитывать 1 день
    #39783629
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
База: 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
Как не учитывать 1 день
    #39783645
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yarnik,

Формализуйте понятие первого дня и задача будет решена.
...
Рейтинг: 0 / 0
Как не учитывать 1 день
    #39783649
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIN(dt) и есть первый день, но задача не решена
...
Рейтинг: 0 / 0
Как не учитывать 1 день
    #39783680
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HAVING же
...
Рейтинг: 0 / 0
Как не учитывать 1 день
    #39783692
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как не учитывать 1 день
    #39783789
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как не учитывать 1 день
    #39784313
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
благодарю, не учил если честно...
...
Рейтинг: 0 / 0
Как не учитывать 1 день
    #39786047
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если понадобится исключить 2 дня с наименьшей датой. Тогда как?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как не учитывать 1 день
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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