sql - 如何获取表中两行之间的差异
问题描述
我有一个返回以下数据集的查询。
样本:
SELECT *
FROM table_name
WHERE rank_code IN (15, 22);
上述查询的输出给出了以下结果。
秩 | RANK_CODE | RANK_DESC |
---|---|---|
3 | 15 | XYZ |
5 | 22 | 美国广播公司 |
现在,我想在单个查询中获得 Rank 的差异,即 5-3 = 2 或 3-5 = 2。只有区别。有没有办法使用 SQL 查询来实现相同的目的,以便我可以将排名代码作为输入参数传递。如果没有找到或无法获取任何行,最终结果将为 0。我们也可以进行这个小检查吗?任何帮助将不胜感激。
解决方案
SELECT coalesce(max(rank) - min(rank), 0)
FROM table_name
WHERE rank_code IN (15, 22);
推荐阅读
- android - 使单击事件传播到位于同一 FrameLayout 内的对等组件,用于主页小部件
- php - 如何使用 5.2 版本更新 Laravel 中的数据
- java - Gradle:从外部编译的类生成一个 jar
- logging - Visual Studio Code 搜索未显示整行
- linux - 如何使用 awk 命令验证文件的内容?
- image - ASP.NET Core 保护图像
- java - java.util.logging - 如何强制所有 Logger 在应用程序的运行时中遵守给定的格式?(HSQLDB)
- php - 可以更改日期时间本地输入的格式
- python - 将多个base64图像合并为一个
- c++ - c++: GTEST_LOG_() 编译失败