sql - 将多个单位转换为 TB 并执行计算的查询
问题描述
我有一个数据集 df,我想在其中将一列从字节转换为太字节,以及将兆字节转换为 TB。
Free Total
30,000,000,000,000.00 40,000,000
40,000,000,000,000.00 50,000,000
字节到 TB - 除以 1024/1024/1024/1024 兆字节到 TB - 除以 1024/1024
期望的结果
Free Total Used
30 40 10
40 50 10
这就是我正在做的
SELECT
Free /1024/ 1024/ 1024 /1024 AS Free1,
Total /1024 /1024 AS Total1,
(Total1-Free1) As Used
FROM df
但是,我没有得到我想要的结果。任何建议表示赞赏
解决方案
您不能在同一范围内重复使用别名。相反,您需要重复表达式(或使用子查询或 CTE):
select
free / 1024 / 1024 / 1024 /1024 as free1,
total / 1024 / 1024 as total1,
(total / 1024 / 1024 - free / 1024 / 1024 / 1024 / 1024) as used
from df
我们可以稍微分解计算:
select
free / 1024 / 1024 / 1024 /1024 as free1,
total / 1024 / 1024 as total1,
(total - free / 1024 / 1024) / 1024 / 1024 as used
from df
请注意,如果您将值存储为整数,则上述查询将进行整数除法(即,结果被截断为整数)。如果这不是您想要的,那么只需将其中一个操作数转换为小数,如下所示:
free / 1024.0 / 1024 / 1024 /1024 as free1,
推荐阅读
- xsd - 从 xsd 导入 xsd 包括
- flutter - 颤振曲线条
- haskell-stack - 当我尝试堆栈设置时,ghc 给出一个健全性检查错误并且不会编译
- python - flask-marshmallow 去掉小数点
- javascript - javascript如何处理jsx
- python - “TypeError:'生成器'对象不可下标”当我尝试使用 for 循环处理二维列表时
- r - 在 Shiny 中使用部分 textInput 作为 R 中的变量
- c# - 带有服务和存储库的 Razor 页面
- reactjs - 如何在反应中呈现特定元素的弹出窗口?
- c++ - 强制表达式为 constexpr