sql - 如何重构这个 SQL 查询?

标签 sql db2

我正在向 IBM DB2 服务器写入以下查询:

SELECT 
    EMPNO, 
    YEAR(CURRENT TIMESTAMP - BIRTHDATE) AS AGE,
    DENSE_RANK() OVER(ORDER BY YEAR(CURRENT TIMESTAMP - BIRTHDATE) ASC) AS RANK

FROM 
    DANDY.EMPLOYEE;

它有效,但看起来很丑,因为我正在重复表达式:

YEAR(CURRENT TIMESTAMP - BIRTHDATE)

但是这样写是行不通的:

DENSE_RANK() OVER(ORDER BY AGE ASC) AS RANK

如何让它变得更好?

最佳答案

SELECT 
EMPNO, 
AGE,
DENSE_RANK() OVER(ORDER BY AGE ASC) AS RANK
FROM (SELECT EMPNO,
             YEAR(CURRENT TIMESTAMP - BIRTHDATE) AS AGE
      FROM DANDY.EMPLOYEE);

关于sql - 如何重构这个 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13809002/

相关文章:

sql - 如何在SQL中执行T9搜索方法?

php - cakephp 从旧数据值+新值保存更新数据

db2 - 基于 db2 中的 ID 匹配,从一个表到另一个表的 SQL 更新

sql - 我可以在 SQL 中执行 "conditional"连接吗

sql - 如何使用 Linq 进行全文搜索?

sql - 使用虚拟默认列取 SQL 平均值

c# - 计算每天改变值(value)的公式的最佳方法是什么?

java - 如何获取批量插入语句自动生成的键?

sql - 语法错误 JMeter DB2

sql-server - SQL Server 和/或 db2 的 Oracle 导出的等效项