SQLite возвращает минимальное значение больше максимального значения - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь сделать запрос к базе данных учетных записей, каждая из которых имеет несколько записей, и получить общее, среднее, минимальное, максимальное и количество из каждой учетной записи.Код ниже является примером для одной учетной записи.Проблема в том, что я получаю много записей, где минимальное значение больше максимального.Я выборочно проверил некоторые из этих учетных записей, и похоже, что среднее значение рассчитывается правильно, поэтому я не думаю, что это проблема типа данных.Может ли быть начальная «1» в 11 читается как меньше, чем 9?Если так, как я могу это исправить?

SELECT  `Account` ,
    --`CustomerName` ,
    `METER_SIZE` ,
    SUM(`Consumption`) AS `Total_Cons` ,
    AVG(`Consumption`) AS `Avg_Cons` ,
    MIN(`Consumption`) AS `Min_Cons` ,
    MAX(`Consumption`)  AS `Max_Cons` ,
    COUNT(`Consumption`) AS `Bills` 
FROM `Billing_Meterreads_2015_2017`
WHERE `CustomerClass` LIKE 'Residential' 
    AND `Account` LIKE '000000280' ;

Возвращает

|Account   | METER_SIZE | Total_Cons | Avg_Cons | Min_Cons | Max_Cons | Bills |
|000000280 | 3/4        | 597.0      | 7.6538   |11.00000  | 9.00000  | 78    |

1 Ответ

0 голосов
/ 25 мая 2018

Пожалуйста, проверьте, что тип данных Consumption.Вы, вероятно, правы, предполагая, что это проблема типа, а Consumption - это строка, где '11 .00000 '<' 9.0000 ', потому что' 1 '<' 9 '. </p>

AVG может работать, потому чтосреднее значение по строкам отсутствует, поэтому SQLite преобразует их в числа без вывода сообщений.

Возможные решения:

  • Хорошо: измените тип данных столбца.
  • Менее хорошо: min(cast(consumtion as decimal)),max(cast(consumtion as decimal))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...