powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
34 сообщений из 34, показаны все 2 страниц
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627308
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, почему вот такая запись выдает ошибку?:
'Select MIN(Холодная_Вода) from счет limit 4';
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627330
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32,

http://segfault.kiev.ua/smart-questions-ru.html#goal Если вы пытаетесь разобраться, как что-либо сделать (а не сообщаете об ошибке), начинайте с описания цели. И только потом описывайте конкретный шаг на пути к ней, который вы не смогли выполнить.У вас запрос бессмысленный. Вот такое
Код: sql
1.
select min(...) from ...

выдаст только одну (или ни одной) записи. Зачем вы добавляете "лимит 4"? Может, имели в виду order by 1 limit 4, и без минимума?
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627341
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Источник показанной ошибки скорее всего - кириллица.
Но и сказанное выше - в полный рост.
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627351
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirЖеня32,

http://segfault.kiev.ua/smart-questions-ru.html#goal Если вы пытаетесь разобраться, как что-либо сделать (а не сообщаете об ошибке), начинайте с описания цели. И только потом описывайте конкретный шаг на пути к ней, который вы не смогли выполнить.У вас запрос бессмысленный. Вот такое
Код: sql
1.
select min(...) from ...

выдаст только одну (или ни одной) записи. Зачем вы добавляете "лимит 4"? Может, имели в виду order by 1 limit 4, и без минимума?

Например, в таблице имеется 10 записей, 1 записи = 1 месяц.
Чтобы узнать расход(пусть это будет счетчик холодной воды) за три месяца, нужно вычислить разницу между наибольшем и наименьшим показанием счетчика за четыре меся. Вот и возникает вопрос, как узнать наибольшие и наименьшее значения столбцов, последних четырех записей?
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627356
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaИсточник показанной ошибки скорее всего - кириллица.
Но и сказанное выше - в полный рост.

А почему тогда так работает?:
'Select Холодная_Вода from счет where Дата in (SELECT top 4 Дата from счет ORDER BY Дата DESC)'
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627378
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32,

select MAX(cold_water)-MIN(cold_water) FROM table WHERE date>=дата_начала AND date<=дата_конца
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627379
tanglirвыдаст только одну (или ни одной) записи. агрегатный запрос без GROUP BY выдает всегда ровно одну строку, даже если его построить по пустой таблице...
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627388
Женя32А почему тогда так работает?:
'Select Холодная_Вода from счет where Дата in (SELECT top 4 Дата from счет ORDER BY Дата DESC)'Потому что это совсем другой, а главное - синтаксически верный - запрос.

З.Ы.
Когда придумываешь свой синтаксис он, чаще всего, не работает...
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627389
tanglir Может, имели в виду order by 1 limit 4, и без минимума?ТС хочет из 4-х каких попало строк выбрать ту, которая минимальна. Ты же предлагаешь ему выбрать 4-ре строки с минимальным значением. Думается, это немного разные вещи
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627393
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chabapokЖеня32,

select MAX(cold_water)-MIN(cold_water) FROM table WHERE date>=дата_начала AND date<=дата_конца
Дело в том, что начальная и конечная дата не фиксированные...
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627432
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32как узнать наибольшие и наименьшее значения столбцов, последних четырех записей?ну вот это уже ближе к правде
Код: sql
1.
2.
3.
4.
5.
6.
select max(a),min(a)
from (
 select значение as a from откуданибудь 
 where чегототам
 order by дата limit 4
) t1
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627454
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32chabapokЖеня32,

select MAX(cold_water)-MIN(cold_water) FROM table WHERE date>=дата_начала AND date<=дата_конца
Дело в том, что начальная и конечная дата не фиксированные...

Не фиксированные на этапе компиляции или на этапе выполнения? Если на этапе выполнения - значит, вы неверно обьяснили что вам нужно. Возможно даже вы сами недоконца понимаете что хотите. Что значит не фиксированные? Как можно выбрать разницу показаний по непонятно_каким месяцам?

Если на этапе компиляции - то это нормально. Значит на этапе выпонения начало и конец известны, вот и конструируете нужный запрос и выполняете его.
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627457
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokКак можно выбрать разницу показаний по непонятно_каким месяцам?ну почему же "непонятно каким"? по последним четырём на текущий момент.
вот думаю, рассказывать ТСу о том, что показания могут быть ошибочными (и его метод расчёта накрывается медным тазом), или нет? :)
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627612
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32А почему тогда так работает?Попробуй ответить на простой вопрос - где именно на длинном пути передачи запроса от приложения к серверу возникла ошибка. На какой стадии...
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38627664
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirпо последним четырём на текущий момент.

SELECT MAX(cold_water)-MIN(cold_water) FROM (select cold_water FROM table ORDER BY date DESC LIMIT 4)
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38628071
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chabapokЖеня32пропущено...

Дело в том, что начальная и конечная дата не фиксированные...

Не фиксированные на этапе компиляции или на этапе выполнения? Если на этапе выполнения - значит, вы неверно обьяснили что вам нужно. Возможно даже вы сами недоконца понимаете что хотите. Что значит не фиксированные? Как можно выбрать разницу показаний по непонятно_каким месяцам?

Если на этапе компиляции - то это нормально. Значит на этапе выпонения начало и конец известны, вот и конструируете нужный запрос и выполняете его.

Вы предлагаете мне определять максимальное значение по максимальной дате, но, понимаете в чем дело, человек может ошибиться и записать неверные показания. Например, 1-й месяц = 11; 2-й месяц (ошибся, и записал не верные показания) = 22; 3-й месяц = 18. Как узнать расход за два месяца?
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38628210
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. вашего вопроса я не понял

2. программа, устойчивая ко ошибкам которые ввел ей человек - это нобелевка, и возможно не одна. Частично ошибки можно выловить, например если ожидается ввод месяца, а ввели 22 - это ошибка, т.к. должно быть число меньше или равное 12. Но если ввели число в рамках ожидаемого диапазона - ни одна программа никогда не скажет что это ошибка.

3. запрос постом выше не подходит?
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38628224
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapoktanglirпо последним четырём на текущий момент.

SELECT MAX(cold_water)-MIN(cold_water) FROM (select cold_water FROM table ORDER BY date DESC LIMIT 4)а теперь внимательно читаем мой предыдущий пост...
chabapok2. программа, устойчивая ко ошибкам которые ввел ей человек - это нобелевка, и возможно не одна. Частично ошибки можно выловить, например если ожидается ввод месяца, а ввели 22 - это ошибка, т.к. должно быть число меньше или равное 12. Но если ввели число в рамках ожидаемого диапазона - ни одна программа никогда не скажет что это ошибка.Пургу несёте :) ТС же ясно написал (таки заглянул, похоже, в спойлер): в месяц N передали 11, в месяц N+1 передали 22, а в месяц N+2 передали 18. Какой ещё "ввод месяца", вы вообще о чём?


Женя32, так это вам надо определиться, как считать. Если вы хотите получить разность первого и последнего по дате, а не просто максимального и минимального значений, то так и напишите. А то кто знает, может, у вас ещё какое-то решение уже созрело :)
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38628303
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"ТС же ясно написал (таки заглянул, похоже, в спойлер): в месяц N передали 11, в месяц N+1 передали 22, а в месяц N+2 передали 18"

что значит "передать в месяц"? 11,22,18 - это расходы? Или это месяцы? непонятно.
вобщем, пока нормально задача не сформулирована.
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38628371
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рукалицо.жпг
chabapokчто значит "передать в месяц"?Значит "передать показания по данному счётчику за данный месяц". "Внести эти показания в БД", если так понятней.
chabapok11,22,18 - это расходы? Или это месяцы? непонятно.К.О. намекает, что если речь идёт о трёх месяцах и в формулировке условия присутствуют N,N+1 и N+2, то 11, 22 и 18 - это показания. Не месяцы, не расходы, а показания.
PS.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select 
 max(case when t1.n=1 then table.value else null end) as value1
 ,max(case when t1.n=2 then table.value else null end) as value2
from (
 select 1 n,id from table
 where <...> order by date_field desc limit 3,1
 UNION ALL
 select 2,id from table
 where <...> order by date_field desc limit 0,1
) t1
join table on t1.id=table.id
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38628498
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда, имхо, при помощи только mysql это не решить. Надо вытягивать эти строки в свою программу, и анализировать их. потому что появление 18 после 22 - это переполнение, (и строго говоря - не факт что перепеолнение однократное) то есть реальный расход зависит от колиества разрядов в счетчике.
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38628515
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokпереполнениеразверните мысль
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38628668
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32человек может ошибиться и записать неверные показания. Например, 1-й месяц = 11; 2-й месяц (ошибся, и записал не верные показания) = 22; 3-й месяц = 18. Как узнать расход за два месяца?Давайте все же определимся с невнятностями терминологии :)

Насколько я понял, задачу можно сформулировать так: обрабатывабются показатели счетчиков воды по разным лицевым счетам. Каждый л/счет содержит 2 строки (т.к. даты ввода показаний могут различаться) - тип счетчика (хол/гор вода), дата снятия показаний и значение счетчика воды. Значение счетчика со временем может только возрастать (или как минимум неубывать). Если ошибочно введено большее значение, чем на счетчике, это считается авансом, потому как потом все равно нарастет до ранее введенного. Однако все же есть возможность исправить явно ошибочное значение (например, введено 2200 вместо 22.00) - но неясно на какую дату относить это исправление, если расчет стоимости уже произведен.

Далее. Требуется - что?
Посчитать расход воды за последний квартал года? Или за последние введенные показатели? За сколько месяцев? Как учитывать исправления неверно введенных данных?
Для конкретного лицевого счета или для всех? По одному типу счетчика или раздельно по каждому? Или итогово по л/счету?

Или вообще все не так, как написано - тогда о чем вообще речь?

Решать то, не знаю что - как-то не хочется

Подойдут ли для теста вот такие данные?Если нет - предоставьте свои
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create table WaterMeter (
   id int identity primary key
   ,personal_id int
   ,date datetime
   ,typ int -- 1=холодная, 2=горячая
   ,value float
   );
insert WaterMeter (personal_id, date,typ,value) values
   (1,'2013-10-20',1,18),(1,'2013-11-21',1,40),(1,'2013-12-19',1,56),(1,'2014-01-24',1,76),
   (2,'2013-10-22',1,26),                      (2,'2013-12-20',1,68),
   (2,'2013-10-22',2,20),                      (2,'2013-12-20',2,54),
   (3,'2013-10-20',1, 9),(3,'2013-11-20',1,16),(3,'2013-12-20',1,29),
   (3,'2013-10-20',2, 5),(3,'2013-11-20',2,11),(3,'2013-12-20',2,19)
;

...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38628828
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirchabapokпереполнениеразверните мысль

http://ru.wikipedia.org/wiki/Арифметическое_переполнение

Переполнение происходит в любом счетчике, где кол-во разрядов фиксированно. Например, в автомобильном одометре как правило шесть разрядов. Если поехать 999999км а потом проехать еще 2км, то показывать будет 000001. Тоже самое со счетчиком воды. 18 после 22, это свидетельство того, что было переполнение. (или что поставили новый счетчик, но будем этот случай не учитывать) Тогда реальный расход зависит от количества разрядов в счетчике. Например, если в нем 3 разряда, то это скоерй всего значит, что от 22 он досчитал до 999 потом сбросился в 0 и досчитал до 18. Ну то есть на самом деле это 22->1018, но единичка в самый старший разряд утерян.
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38628856
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007Давайте все же определимся с невнятностями терминологии :)

Насколько я понял, задачу можно сформулировать так: обрабатывабются показатели счетчиков воды по разным лицевым счетам. Каждый л/счет содержит 2 строки (т.к. даты ввода показаний могут различаться) - тип счетчика (хол/гор вода), дата снятия показаний и значение счетчика воды. Значение счетчика со временем может только возрастать (или как минимум неубывать). Если ошибочно введено большее значение, чем на счетчике, это считается авансом, потому как потом все равно нарастет до ранее введенного. Однако все же есть возможность исправить явно ошибочное значение (например, введено 2200 вместо 22.00) - но неясно на какую дату относить это исправление, если расчет стоимости уже произведен.


определиться с невнятностями - идея хорошая, только какое вы имеете отношение к топикстартеру?

"Если ошибочно введено большее значение, чем на счетчике, это считается авансом" -- програмно этот факт не вычислить. Или нужна еще галочка "данное значение больше чем на счетчике" или галочка "это значение введено ошибочно". Ну или что-то вроде этого. Вобщем, так не бывает. Хотите чтоб было без ошибок - делайте электронную систему сьема показаний счетчика в несколько каналов ввода. Это явно не случай топикстартера.

Поэтому предлагаю считать, что все, что введено - валидно. Валидация данных происходит на этапе ввода, и невалидные данные просто не могут попать в базу.

Поэтому, если следующее значение оказалось меньше предыущего - значит было переполнение, причем считаем, что однократное.
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38628917
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokCygapb-007Давайте все же определимся с невнятностями терминологии :)

Насколько я понял, задачу можно сформулировать так: обрабатывабются показатели счетчиков воды по разным лицевым счетам. Каждый л/счет содержит 2 строки (т.к. даты ввода показаний могут различаться) - тип счетчика (хол/гор вода), дата снятия показаний и значение счетчика воды. Значение счетчика со временем может только возрастать (или как минимум неубывать). Если ошибочно введено большее значение, чем на счетчике, это считается авансом, потому как потом все равно нарастет до ранее введенного. Однако все же есть возможность исправить явно ошибочное значение (например, введено 2200 вместо 22.00) - но неясно на какую дату относить это исправление, если расчет стоимости уже произведен.


определиться с невнятностями - идея хорошая, только какое вы имеете отношение к топикстартеру?Вопрос был задан не вам, не стоит флудить вашими "Поэтому предлагаю считать" в чужой теме
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38628949
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007,

Ну вы тоже предложили свой вариант - получается это ваши догадки в чужой теме.

Топикстартер допустил неоднозначность, каждый написал про свое виденье этой задачи. Какой же это флуд, это не флуд, это альтернативы которые должны помочь топикстартеру определиться с тем что он имел в виду.
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38629620
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokТоже самое со счетчиком воды. 18 после 22, это свидетельство того, что было переполнение. (или что поставили новый счетчик, но будем этот случай не учитывать)Открою вам секрет: в 99% случаев это свидетельство того, что были переданы ошибочные показания.
chabapokПоэтому предлагаю считать, что все, что введено - валидно. Валидация данных происходит на этапе ввода, и невалидные данные просто не могут попать в базу. ROFL
Спасибо, подняли настроение с утра.
chabapokТопикстартер допустил неоднозначностьвгде он допустил "неоднозначность"?
Вот тутЖеня32человек может ошибиться и записать неверные показания. Например, 1-й месяц = 11; 2-й месяц (ошибся, и записал не верные показания) = 22; 3-й месяц = 18всё описано предельно ясно, никаких домысливаний не требуется (по крайней мере, большинству присутствующих в теме).
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38629797
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirв 99% случаев это свидетельство того, что были переданы ошибочные показания.
Хорошо, но только если так считать, оставшийся 1% - это ложка дегтя в бочке меда.
И вероятность, что это ошибка ввода тем меньше, чем ближе к концу диапазона счетчика мы приближаемся. Например, если счетчик шестизначный, и после 120000 ввели 110000 - то наверное это ошибка (ну или был аванс), а если после 999100 ввели 10 - то это не ошибка и не аванс, а переполнение.

tanglirСпасибо, подняли настроение с утра.
под "на этапе ввода" подразумевалась и серверная часть тоже - с проверкой валидности.


tanglirchabapokТопикстартер допустил неоднозначностьвгде он допустил "неоднозначность"?
Вот тутЖеня32человек может ошибиться и записать неверные показания. Например, 1-й месяц = 11; 2-й месяц (ошибся, и записал не верные показания) = 22; 3-й месяц = 18всё описано предельно ясно, никаких домысливаний не требуется (по крайней мере, большинству присутствующих в теме).

Во-первых, один пример не обязан покрывать все возможные случаи. Во-вторых, топикстартер, судя по вопросу, имеет мало опыта, поэтому некоторые проблемы просто еще не видит. Но это как суслик - его не видно, а он есть.
В его идеях еще есть такие моменты.
1. Показания вводятся "на текущий момент". Это значит, что во 2й месяц туда введут 22, и только через месяц, когда туда введут 18 станет ясно, что где-то есть ошибка. Но где - все еще не ясно. А на протяжении всего месяца система будет работать, как будто ошибки нет. Через месяц возникнет подозрение на ошибку, но оно равновероятно для строк с числом 18 и 22. И только по последующим строкам можно как-то попытаться понять в какой строке была ошибка и корректировать, например, заменив это 22 интерполированным значением. Но это будет возможно только через время - когда последующие строки появятся. Но считать надо сейчас, с теми данными что есть.

2. Когда происходит замена счетчика, то никто не отматывает показания нового счетчика, чтобы они равнялись старому. При этом в базе, например, может появится еще 1 строка с отрицательным компенсирующим числом. И тогда вместо LIMIT 4 уже надо будет уже делать LIMIT 5, а если 1 месяц показания записать забудут - то надо делать LIMIT 3. Т.е. в общем случе LIMIT не годится, поэтому я бы делал выбор строк через WHERE.

3. Как-то реагировать на ошибки - это вообще не вопрос базы, это скорей уже вопрос алгоритмов.

Вообще, есть подозрение, что все эти наши рассуждения топикстартеру до лампочки. Правильный с его точки зрения ответ или идею ему уже подали, и с тех пор он в тему не заглядывает и не заглянет.
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38629821
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokа если после 999100 ввели 10 - то это не ошибка и не аванс, а переполнение.до меня только теперь дошло, что имелось в виду переполнение самого счётчика, а не некой расчётной переменной :)
chabapokКогда происходит замена счетчика, то никто не отматывает показания нового счетчика, чтобы они равнялись старому. При этом в базе, например, может появится еще 1 строка с отрицательным компенсирующим числом.Вообще-то во вменяемо построенной базе при этом заводится новый счётчик :) На что сударь 007 и намекнул, посоветовав ТСу сначала поставить задачу, а уж потом её решать. Но скорее всего ТСу все эти рассуждения уже действительно не нужны.
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38631303
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot chabapok]tanglirв 99% случаев это свидетельство того, что были переданы ошибочные показания.
Хорошо, но только если так считать, оставшийся 1% - это ложка дегтя в бочке меда.
И вероятность, что это ошибка ввода тем меньше, чем ближе к концу диапазона счетчика мы приближаемся. Например, если счетчик шестизначный, и после 120000 ввели 110000 - то наверное это ошибка (ну или был аванс), а если после 999100 ввели 10 - то это не ошибка и не аванс, а переполнение.

tanglirСпасибо, подняли настроение с утра.
под "на этапе ввода" подразумевалась и серверная часть тоже - с проверкой валидности.


tanglirпропущено...
вгде он допустил "неоднозначность"?
Вот тутпропущено...
..

2. Когда происходит замена счетчика, то никто не отматывает показания нового счетчика, чтобы они равнялись старому. При этом в базе, например, может появится еще 1 строка с отрицательным компенсирующим числом. И тогда вместо LIMIT 4 уже надо будет уже делать LIMIT 5, а если 1 месяц показания записать забудут - то надо делать LIMIT 3. Т.е. в общем случе LIMIT не годится, поэтому я бы делал выбор строк через WHERE.

...

С заменой счетчика все очень просто:

if a < b then //если в этом месяце показания счетчика меньше чем в предыдущим месяце.
begin
holvod:=b-a; //чтобы проверить на сколько показания счетчика меньше, чем в этом предыдущим месяце
if holvod > 150 then // если разница будет равна, приблизительно, величине расхода за несколько лет то, уже ясно что либо счетчик обнулился, либо, заменен, и тогда показания счетчика за предыдущий месяц заменяем нулем.
begin
b:=0;
holvod:=a-b;
end
else
holvod:=0;// иначе расход нуливой
end
else
begin
holvod:=a-b;
end;
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38631492
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему-то и такой синтаксис не принимает?:
SELECT * FROM счет ORDER BY Дата DESC limit 3
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38632483
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32,

может, у вас нет поля с именем "Дата"?
или компонент доступа косячит с кодировками - попробуйте на таблице с чисто латинскими названиями полей.
...
Рейтинг: 0 / 0
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
    #38632489
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32С заменой счетчика все очень просто:
Женя32то, уже ясно ROFL
счастливый вы человек
Женя32если разница будет равна, приблизительно , величине расхода за несколько лет то, уже ясно что либо счетчик обнулился, либо, заменен, и тогда показания счетчика за предыдущий месяц заменяем нулем.А в одной системе (не буду показывать пальцем) вообще тупо берётся 10% от среднего потребления - если потребление, взятое по модулю, отличается не более чем на 10% от среднего за полгода(год? не помню), то это тот же счётчик, если нет - то новый. Тут можно 1006500 методов изобрести, но главное, что все результат расчётов будут только предположениями .
Но факт есть факт - если передали меньше, то расход таки будет отрицательный, пока не доказано иное :)
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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