首页 > 解决方案 > SQL max 函数返回 NULL 值

问题描述

这是数据库小提琴

我试图获得每个州的最低、最高和平均家庭收入中位数。虽然我得到了最低和平均收入。最大值都返回NULL。这是我的代码,

SELECT
Statecode,
MIN(Median_household_income) 'Minimum income',
MAX(Median_household_income) 'Maximum Income',
AVG(Median_household_income) 'Average Income'
FROM census
GROUP BY Statecode;

如何解决这个问题?

标签: sqlsqlite

解决方案


Median_household_income实际上,您的表包含带有字符串文字的列中的值,'NULL'而不是NULL.
正如SQLite 版本 3 中的数据类型中所解释的那样

INTEGER 或 REAL 值小于任何 TEXT 或 BLOB 值

所以你得到最小的整数值,因为它小于'NULL'但你得到的最大值,'NULL'不是 NULL结果。

用这个语句删除它们(因为我猜你不想要它们):

UPDATE census 
SET Median_household_income = NULL
WHERE Median_household_income = 'NULL'

并且查询将正常工作。
请参阅演示
结果:

| Statecode | Minimum income | Maximum Income | Average Income |
| --------- | -------------- | -------------- | -------------- |
| MA        | 2499           | 83273          | 57358          |
| PR        | 6989           | 66063          | 19598.656      |

推荐阅读