"SELECT
ROUND(AVG(A80),2) AVG_A80,
ROUND(AVG(A92),2) AVG_A92,
ROUND(AVG(A95),2) AVG_A95,
ROUND(AVG(DT),2) AVG_DT,
ROUND(AVG(gas),2) AVG_gas,
DATE_FORMAT(date, '%d') AS day,
DATE_FORMAT(date, '%d.%m') AS my_date
FROM price_fuel AS fuel
WHERE date>DATE_ADD(curdate(),INTERVAL -31 DAY)
GROUP BY my_date
ORDER BY date ASC"
Как сделать что бы функция AVG пропускала ячейки с нулевым значением?
Спустя 19 минут, 16 секунд (21.04.2011 - 10:58) Renden написал(а):
Evilsoul
AVG () возвращает NULL, если нет соответствующих строк.
может саму эту функцию запихнуть в функцию IFNULL или IS NOT NULL?
AVG () возвращает NULL, если нет соответствующих строк.
может саму эту функцию запихнуть в функцию IFNULL или IS NOT NULL?
Спустя 10 минут, 48 секунд (21.04.2011 - 11:09) Renden написал(а):
Evilsoul
хотя ты знаешь, я только что попробывал, у меня она пропускает пустые ячейки, она их не считает..
Пустые именно в плане null, а не просто пустая, это разные вещи, или у тя прям в ячейках 0 -ли стоят?
хотя ты знаешь, я только что попробывал, у меня она пропускает пустые ячейки, она их не считает..
Пустые именно в плане null, а не просто пустая, это разные вещи, или у тя прям в ячейках 0 -ли стоят?
Спустя 5 минут, 43 секунды (21.04.2011 - 11:14) Evilsoul написал(а):
Renden
да, стоят нули (
да, стоят нули (
Спустя 18 минут, 32 секунды (21.04.2011 - 11:33) Renden написал(а):
Evilsoul
А нафиг они тебе?) Ну тогда поставь в конце условие типа WHERE такие-то_стобцы != 0
А нафиг они тебе?) Ну тогда поставь в конце условие типа WHERE такие-то_стобцы != 0
Спустя 5 минут (21.04.2011 - 11:38) Evilsoul написал(а):
+ Крассава
) а я парю мозг с функцией, бывают такие лажи(((

Спустя 14 минут, 14 секунд (21.04.2011 - 11:52) Evilsoul написал(а):
сегодня туплю как никогда((
не совсем нормально, я же исключу всё что с "0" а мне это нужно!
не совсем нормально, я же исключу всё что с "0" а мне это нужно!
Спустя 35 секунд (21.04.2011 - 11:53) Evilsoul написал(а):
мне среднее нужно без ячеек с "0"
Спустя 34 минуты, 15 секунд (21.04.2011 - 12:27) Renden написал(а):
Evilsoul
Так вроде же данная функция выводит только 1 строку со среднем значением..
У тя получается вывод вроде же такой:
AVG_A80 | AVG_A92 | и тп
72912 | 93921 | и тп
Или нет?)
Так вроде же данная функция выводит только 1 строку со среднем значением..
У тя получается вывод вроде же такой:
AVG_A80 | AVG_A92 | и тп
72912 | 93921 | и тп
Или нет?)
Спустя 31 минута (21.04.2011 - 12:58) Evilsoul написал(а):
да, одну.
Но она же считает, а если считает то по очереди, а если по очереди то можно фильтровать? или нет? )
Но она же считает, а если считает то по очереди, а если по очереди то можно фильтровать? или нет? )
Спустя 33 минуты, 19 секунд (21.04.2011 - 13:31) Renden написал(а):
Evilsoul
Хмм.. пойду покурю подумаю, так зачем тебе именно 0, чем тя null не устраивает?)
Хмм.. пойду покурю подумаю, так зачем тебе именно 0, чем тя null не устраивает?)
Спустя 29 минут, 11 секунд (21.04.2011 - 14:00) Evilsoul написал(а):
фишка в том что у меня в значениях при подсчете среднего значения может фигурировать 0 а это не есть верным при подсчете среднего, поэтому: сюда AVG_A80 мне нужно получить среднее без учета 0 а остальные данные вывести такими как есть...
Спустя 3 минуты, 19 секунд (21.04.2011 - 14:04) Renden написал(а):
Renden
Подумав, думаю никак, тк 0 это тоже число и AVG не может его игнорировать, отсюда 3 варианта:
1) Делать разные выборки SELECT 1 (SELECT 2 (SELECT 3)) и тп или UNION
2) Выбрать то что надо без AVG посчитать среднее на php
3) Поставить заместо 0 в базу null ; кстати ты так и не ответил зачем тебе 0 в базе ввиде числа, если ты его используешь как вывод то почемубы не поставить типа if($row[''] = null) echo "равно 0" невижу смысла. да и если надо переделать UPDATE test SET столбец=null where столбец=0 всем махом))
На твой последний месадж:
Ну тогда сделай отделный запрос вутри запроса 1 вариант)
Подумав, думаю никак, тк 0 это тоже число и AVG не может его игнорировать, отсюда 3 варианта:
1) Делать разные выборки SELECT 1 (SELECT 2 (SELECT 3)) и тп или UNION
2) Выбрать то что надо без AVG посчитать среднее на php
3) Поставить заместо 0 в базу null ; кстати ты так и не ответил зачем тебе 0 в базе ввиде числа, если ты его используешь как вывод то почемубы не поставить типа if($row[''] = null) echo "равно 0" невижу смысла. да и если надо переделать UPDATE test SET столбец=null where столбец=0 всем махом))
На твой последний месадж:
Ну тогда сделай отделный запрос вутри запроса 1 вариант)
Цитата |
значениях при подсчете среднего значения может фигурировать 0 а это не есть верным при подсчете среднего |
Эту строку не понял)
Спустя 53 минуты, 35 секунд (21.04.2011 - 14:57) Evilsoul написал(а):
ROUND(AVG(IF(A80>0,A80,NULL)),2) AVG_A80,
ROUND(AVG(IF(A92>0,A92,NULL)),2) AVG_A92,
ROUND(AVG(IF(A95>0,A95,NULL)),2) AVG_A95,
ROUND(AVG(IF(DT>0,DT,NULL)),2) AVG_DT,
ROUND(AVG(IF(gas>0,gas,NULL)),2) AVG_gas,
вот так
Спустя 4 минуты, 57 секунд (21.04.2011 - 15:02) inpost написал(а):
Evilsoul
А ещё лучше всякие операции вынести за пределы БД =)
А ещё лучше всякие операции вынести за пределы БД =)
Спустя 18 минут, 1 секунда (21.04.2011 - 15:20) Evilsoul написал(а):
inpost
Зачем? это то что мне нужно
и мне всегда казалось что если можно в СКУЛЕ сделать, то зачем это делать на ПШП?
Зачем? это то что мне нужно

_____________
Кто хочет, ищет возможности, кто не хочет - причины. /_ К. Маркс
Истенно велик тот человек который сумел овладеть своим временем. /_Гесиод VIII-VII вв. до Р. Х.
Медлительный непрерывно борится с бедами всю жизнь. /_Гесиод VIII-VII вв. до Р. Х.
Для того что бы увидеть радугу нужно пережить дождь.
Женщины: Хочется чего-то красного но синего.