我如何排除某些薪水,然后按顺序排序?

互联

我正在使用一个包含多个表的 SQL 数据库,每个表大约有 170,000 条记录。数据最初都在单独的 XLSX 文件中,我将这些文件保存为 CSV,然后导入到 SQLite 中。

其中一列是“TotSalary”。我想用这个专栏做两件事。许多条目似乎已不复存在,因为“TotSalary”是“$0.00”。我想排除工资为 0 的条目。

我试过了:

WHERE (other conditions here)
   AND (other conditions here)
   AND 'TotSalary' IS NOT '$0.00'

WHERE (other conditions here)
   AND (other conditions here)
   AND 'TotSalary' != '$0.00'

这些都不起作用。如果我说 'TotSalary' = '$0.00',则查询不返回任何记录,所以不知何故我没有正确定位该值。我查看了 SQLite 的运算符,!= 和 NOT 都是正确的运算符。我需要调整任何语法吗?

最后,我也希望能够按“TotSalary”进行订购。问题是查询使用的是字典顺序。订购时,“$100,000”的工资低于“$20,000”。

在此处输入图片说明

一个站点建议更改列的数据类型(默认情况下它们都是 TEXT)。我尝试将类型更改为 NUMERIC,然后是 INTEGER,这两者都没有任何区别。

我也尝试过,ORDER BY cast('TotSalary' as int) DESC但这也不起作用。

迈克

我相信以下方法会起作用(财务是表名):-

SELECT 
    * 
FROM financial 
WHERE CAST(replace(replace(TotSalary,',',''),'$','') AS REAL) > 0.00 
ORDER BY CAST(replace(replace(TotSalary,',',''),'$','') AS REAL) DESC

这将使用该replace函数删除逗号和美元符号然后它是CASTa 的结果数字,REAL允许将其与 0.00 进行比较,从而允许排除具有 0 的行。

ORDER 使用相同的替换和强制转换来正确排序。

您可以简化上述内容,但需要使用额外的列:-

SELECT 
    *, 
    CAST(replace(replace(TotSalary,',',''),'$','') AS REAL) AS cnv 
FROM financial WHERE cnv > 0.00 
ORDER BY cnv DESC

另一种方法可能是转换数据库中的行,从而不需要转换列,例如您可以使用:-

UPDATE financial 
    SET TotSalary = CAST(replace(replace(TotSalary,',',''),'$','') AS REAL);
  • 请注意,假设工资永远不会为负。

我尝试将类型更改为 NUMERIC,然后是 INTEGER,这两者都没有任何区别。

列类型的影响非常有限,总之任何类型的值都可以保存在任何类型的列中。唯一的限制是rowid的别名(列类型是INTEGER PRIMARY KEYINTEGER PRIMARY KEY AUTOINCREMENT)只能存储一个整数。您可能希望查看SQLite 版本 3 中的数据类型

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

排除Google表格中的某些标签,然后按字母顺序对标签进行排序

如何使用sort_by按字母顺序然后按数字顺序然后按特殊字符排序

如何按字母顺序对 csv 数据进行排序,然后按列按数字排序?

MySQL-如何按名称排序,然后按字母数字顺序在表上排序?

SQL如何用数字按字母顺序排序文本,然后按数字排序

按值对Hashmap排序,然后按字母顺序排序

Linq按属性排序,然后按原始顺序排序

我想按数字降序然后按字母顺序升序对字典进行排序

如何按长度排序列表,然后按字母顺序反向

C-按计数排序,然后按字母顺序

如何按字母顺序然后按数字顺序?

如何先按字母顺序对字典排序,然后按值升序排列?

如何计算字符串中的字符数,然后按字母顺序排序?

SQL如何按天排序然后按总和排序

如何按行长排序文件,然后按字母顺序对第二个键排序?

如何在外壳脚本中按字母顺序对第二列进行排序,然后按数字排序?

按数据属性(按字母顺序,然后按数字顺序)对列表项进行排序

如何按百万像素然后按名称对列表排序?

Dplyr / tidyverse如何首先按可用值的数量对列进行排序,然后按字母顺序对列进行排序?

熊猫value_counts:按值排序,然后按字母顺序排序?

按子数组类型值排序,然后按字母顺序排序

MySQL-按多个单词排序,然后按字母顺序排序?

MongoDB:按现有字段排序,然后按字母顺序排序

PHP高级按数字先排序,然后按字母顺序排序

按长度排序数组,然后按字母顺序排序

通过动态提供的对象属性列表按顺序排序对象,然后按样式排序

按字段对对象数组进行排序,然后按字母顺序排序

按视图顺序排序,然后按另一列排序

Python按降序排序字典,然后按字母顺序排序