我正在尝试查询帐户数据库,每个帐户都有多个条目,并从每个帐户中提取总数、平均值、最小值、最大值和计数。下面的代码是一个帐户的示例。问题是我得到了许多最小值大于最大值的条目。我抽查了其中一些帐户,看起来平均值计算正确,所以我认为这不是数据类型的问题。难道 11 中的前导“1”读作小于 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 |
请检查数据类型Consumption
是什么。您可能认为这是一个类型问题并且Consumption
是一个字符串,其中 '11.00000' < '9.0000',因为 '1' < '9'。
AVG
可能有效,因为字符串没有平均值,所以 SQLite 会默默地转换为数字。
可能的解决方案:
min(cast(consumtion as decimal))
,max(cast(consumtion as decimal))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句