sql - “IN”中带有子查询的“WHERE”子句
问题描述
我正在尝试(在 Impala SQL 上)获取两列之间差异最大/最小的行,我正在尝试这样的事情:
SELECT *
FROM table
WHERE col1 - col2 IN ( SELECT MAX(col1-col2)
FROM table, SELECT MIN(col1-col2) FROM table )
仅使用一个子查询有效,但如果我将它们都添加到 IN 中,则会出现错误。
关于如何做到这一点的任何建议?
解决方案
使用子查询连接:
SELECT *
FROM table t
JOIN (
SELECT MIN(col1 - col2) AS min_diff, MAX(col1 - col2) AS max_diff
FROM table
) AS agg ON t.col1 - t.col2 IN (agg.min_diff, agg.max_diff)
推荐阅读
- java - Firebase 数据库 - 如何使用检索到的信息进行参考
- java - 我如何使用带有键的 volley 在 android 应用程序中使用快速代码中的 API
- android - 使用 Retrofit 将 JSON 解析为字符串
- javascript - 为什么这个数组块没有按预期工作导致循环数组错误
- r - 在进行 PCA 和聚类分析时保持与观察相关的变量分组的实用方法
- google-apps-script - 从工作表生成 Google Docs 并动态重命名它们
- node.js - 如何将测试数据从生产环境导入 Firebase Firestore 模拟器以便于测试?
- python - 如何制作自定义错误页面 django 2.2
- python - 这三个选项中哪一个对矩阵方程“Wx + b”最有效?
- python - 如何摆脱 bw 图像中的点并留下连接的像素?