sql - 在 SQL 中使用 where 子句
问题描述
我正在使用 postgre sql,但 where 子句有问题。
我想做的是:
- 将每个月的数据与上个月的数据进行比较
- 选择 8 月至 7 月比率低于 0.7 的位置
下面是我的代码。我使用强制转换为十进制,因为没有它,结果只是整数(0 或 1)。
如果我运行查询,它不会返回任何结果。它没有说错误,但是没有数据 august < 0.7 (但是有!我在没有 where 子句的情况下检查了原始表)
SELECT location
, round(cast(june as decimal)/may, 3) as june
, round(cast(july as decimal)/june, 3) as july
, round(cast(august as decimal)/july, 3) as august
FROM per_country
WHERE august < 0.7
你能告诉我我的代码有什么问题吗?先感谢您
解决方案
您不能在select
子句中重用该子句中定义的别名where
。您需要重复表达式,或使用派生表(子查询,cte):
SELECT location
, round(june::numeric/may, 3) as june
, round(july::numeric/june, 3) as july
, round(august::numeric/july, 3) as august
FROM per_country
WHERE august::numeric/july < 0.7
请注意,您现有的查询表明设计不佳。出于多种原因(可扩展性、效率、可维护性……),您不应该将每个月存储在单独的表中。相反,您应该将每个月放在单独的行上。
推荐阅读
- c# - 无法使用类型属性反序列化 XML
- python - 我应该如何在底图上正确显示我的图?
- python - 异步PG。将记录转换为 JSON 的正确方法是什么
- ios - 在 iOS 上手动配置和启动 Crashlytics
- c# - 尝试通过 Angular 8 访问时出现 Identity Server 4 CORS 错误
- excel - 如何找到非活动工作簿的最后一行并复制/粘贴
- python - 在同一个excel文件中写入多个工作表
- excel - Vba Excel 信任访问 VBA 项目模型
- c# - 我可以在 C# 中将泛型类型转换为 Dictionary<,> 吗?
- cube - 索引犰狳 cx_cube 非连续行