|
|
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, почему вот такая запись выдает ошибку?: 'Select MIN(Холодная_Вода) from счет limit 4'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 07:17:28 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
Женя32, http://segfault.kiev.ua/smart-questions-ru.html#goal Если вы пытаетесь разобраться, как что-либо сделать (а не сообщаете об ошибке), начинайте с описания цели. И только потом описывайте конкретный шаг на пути к ней, который вы не смогли выполнить.У вас запрос бессмысленный. Вот такое Код: sql 1. выдаст только одну (или ни одной) записи. Зачем вы добавляете "лимит 4"? Может, имели в виду order by 1 limit 4, и без минимума? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 08:30:15 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
Источник показанной ошибки скорее всего - кириллица. Но и сказанное выше - в полный рост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 08:53:55 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
tanglirЖеня32, http://segfault.kiev.ua/smart-questions-ru.html#goal Если вы пытаетесь разобраться, как что-либо сделать (а не сообщаете об ошибке), начинайте с описания цели. И только потом описывайте конкретный шаг на пути к ней, который вы не смогли выполнить.У вас запрос бессмысленный. Вот такое Код: sql 1. выдаст только одну (или ни одной) записи. Зачем вы добавляете "лимит 4"? Может, имели в виду order by 1 limit 4, и без минимума? Например, в таблице имеется 10 записей, 1 записи = 1 месяц. Чтобы узнать расход(пусть это будет счетчик холодной воды) за три месяца, нужно вычислить разницу между наибольшем и наименьшим показанием счетчика за четыре меся. Вот и возникает вопрос, как узнать наибольшие и наименьшее значения столбцов, последних четырех записей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 09:03:38 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
AkinaИсточник показанной ошибки скорее всего - кириллица. Но и сказанное выше - в полный рост. А почему тогда так работает?: 'Select Холодная_Вода from счет where Дата in (SELECT top 4 Дата from счет ORDER BY Дата DESC)' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 09:10:30 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
Женя32, select MAX(cold_water)-MIN(cold_water) FROM table WHERE date>=дата_начала AND date<=дата_конца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 09:31:02 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
tanglirвыдаст только одну (или ни одной) записи. агрегатный запрос без GROUP BY выдает всегда ровно одну строку, даже если его построить по пустой таблице... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 09:31:07 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
Женя32А почему тогда так работает?: 'Select Холодная_Вода from счет where Дата in (SELECT top 4 Дата from счет ORDER BY Дата DESC)'Потому что это совсем другой, а главное - синтаксически верный - запрос. З.Ы. Когда придумываешь свой синтаксис он, чаще всего, не работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 09:39:53 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
tanglir Может, имели в виду order by 1 limit 4, и без минимума?ТС хочет из 4-х каких попало строк выбрать ту, которая минимальна. Ты же предлагаешь ему выбрать 4-ре строки с минимальным значением. Думается, это немного разные вещи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 09:43:05 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
chabapokЖеня32, select MAX(cold_water)-MIN(cold_water) FROM table WHERE date>=дата_начала AND date<=дата_конца Дело в том, что начальная и конечная дата не фиксированные... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 09:47:45 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
Женя32как узнать наибольшие и наименьшее значения столбцов, последних четырех записей?ну вот это уже ближе к правде Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 10:18:38 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
Женя32chabapokЖеня32, select MAX(cold_water)-MIN(cold_water) FROM table WHERE date>=дата_начала AND date<=дата_конца Дело в том, что начальная и конечная дата не фиксированные... Не фиксированные на этапе компиляции или на этапе выполнения? Если на этапе выполнения - значит, вы неверно обьяснили что вам нужно. Возможно даже вы сами недоконца понимаете что хотите. Что значит не фиксированные? Как можно выбрать разницу показаний по непонятно_каким месяцам? Если на этапе компиляции - то это нормально. Значит на этапе выпонения начало и конец известны, вот и конструируете нужный запрос и выполняете его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 10:29:44 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
chabapokКак можно выбрать разницу показаний по непонятно_каким месяцам?ну почему же "непонятно каким"? по последним четырём на текущий момент. вот думаю, рассказывать ТСу о том, что показания могут быть ошибочными (и его метод расчёта накрывается медным тазом), или нет? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 10:31:54 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
Женя32А почему тогда так работает?Попробуй ответить на простой вопрос - где именно на длинном пути передачи запроса от приложения к серверу возникла ошибка. На какой стадии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 12:17:42 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
tanglirпо последним четырём на текущий момент. SELECT MAX(cold_water)-MIN(cold_water) FROM (select cold_water FROM table ORDER BY date DESC LIMIT 4) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 13:02:20 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
chabapokЖеня32пропущено... Дело в том, что начальная и конечная дата не фиксированные... Не фиксированные на этапе компиляции или на этапе выполнения? Если на этапе выполнения - значит, вы неверно обьяснили что вам нужно. Возможно даже вы сами недоконца понимаете что хотите. Что значит не фиксированные? Как можно выбрать разницу показаний по непонятно_каким месяцам? Если на этапе компиляции - то это нормально. Значит на этапе выпонения начало и конец известны, вот и конструируете нужный запрос и выполняете его. Вы предлагаете мне определять максимальное значение по максимальной дате, но, понимаете в чем дело, человек может ошибиться и записать неверные показания. Например, 1-й месяц = 11; 2-й месяц (ошибся, и записал не верные показания) = 22; 3-й месяц = 18. Как узнать расход за два месяца? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 17:59:31 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
1. вашего вопроса я не понял 2. программа, устойчивая ко ошибкам которые ввел ей человек - это нобелевка, и возможно не одна. Частично ошибки можно выловить, например если ожидается ввод месяца, а ввели 22 - это ошибка, т.к. должно быть число меньше или равное 12. Но если ввели число в рамках ожидаемого диапазона - ни одна программа никогда не скажет что это ошибка. 3. запрос постом выше не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 20:34:44 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
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, так это вам надо определиться, как считать. Если вы хотите получить разность первого и последнего по дате, а не просто максимального и минимального значений, то так и напишите. А то кто знает, может, у вас ещё какое-то решение уже созрело :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 20:43:18 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
"ТС же ясно написал (таки заглянул, похоже, в спойлер): в месяц N передали 11, в месяц N+1 передали 22, а в месяц N+2 передали 18" что значит "передать в месяц"? 11,22,18 - это расходы? Или это месяцы? непонятно. вобщем, пока нормально задача не сформулирована. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 22:54:46 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
рукалицо.жпг 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 07:11:18 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
Тогда, имхо, при помощи только mysql это не решить. Надо вытягивать эти строки в свою программу, и анализировать их. потому что появление 18 после 22 - это переполнение, (и строго говоря - не факт что перепеолнение однократное) то есть реальный расход зависит от колиества разрядов в счетчике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 10:19:37 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
chabapokпереполнениеразверните мысль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 10:28:10 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
Женя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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 12:18:58 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
tanglirchabapokпереполнениеразверните мысль http://ru.wikipedia.org/wiki/Арифметическое_переполнение Переполнение происходит в любом счетчике, где кол-во разрядов фиксированно. Например, в автомобильном одометре как правило шесть разрядов. Если поехать 999999км а потом проехать еще 2км, то показывать будет 000001. Тоже самое со счетчиком воды. 18 после 22, это свидетельство того, что было переполнение. (или что поставили новый счетчик, но будем этот случай не учитывать) Тогда реальный расход зависит от количества разрядов в счетчике. Например, если в нем 3 разряда, то это скоерй всего значит, что от 22 он досчитал до 999 потом сбросился в 0 и досчитал до 18. Ну то есть на самом деле это 22->1018, но единичка в самый старший разряд утерян. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 13:45:38 |
|
||
|
Как выбрать минимальное значение столбца не из всей таблици, а из нескольких строк?
|
|||
|---|---|---|---|
|
#18+
Cygapb-007Давайте все же определимся с невнятностями терминологии :) Насколько я понял, задачу можно сформулировать так: обрабатывабются показатели счетчиков воды по разным лицевым счетам. Каждый л/счет содержит 2 строки (т.к. даты ввода показаний могут различаться) - тип счетчика (хол/гор вода), дата снятия показаний и значение счетчика воды. Значение счетчика со временем может только возрастать (или как минимум неубывать). Если ошибочно введено большее значение, чем на счетчике, это считается авансом, потому как потом все равно нарастет до ранее введенного. Однако все же есть возможность исправить явно ошибочное значение (например, введено 2200 вместо 22.00) - но неясно на какую дату относить это исправление, если расчет стоимости уже произведен. определиться с невнятностями - идея хорошая, только какое вы имеете отношение к топикстартеру? "Если ошибочно введено большее значение, чем на счетчике, это считается авансом" -- програмно этот факт не вычислить. Или нужна еще галочка "данное значение больше чем на счетчике" или галочка "это значение введено ошибочно". Ну или что-то вроде этого. Вобщем, так не бывает. Хотите чтоб было без ошибок - делайте электронную систему сьема показаний счетчика в несколько каналов ввода. Это явно не случай топикстартера. Поэтому предлагаю считать, что все, что введено - валидно. Валидация данных происходит на этапе ввода, и невалидные данные просто не могут попать в базу. Поэтому, если следующее значение оказалось меньше предыущего - значит было переполнение, причем считаем, что однократное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 13:57:48 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38627389&tid=1834900]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
103ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 392ms |

| 0 / 0 |
