当前位置: 首页 > 面试题库 >

在不使用分析功能的情况下实现排名

申高卓
2023-03-14
问题内容

我想知道是否有一种方法可以在不使用内置函数的情况下实现SQL分析功能。

SELECT *,
    ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS rownum,
    DENSE_RANK() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS denserank,
    RANK() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS rnk
FROM emp;

问题答案:

这是三个等效的表达式:

select emp.*,
       (select count(*)
        from emp emp2
        where emp2.dept_id = emp.dept_id and
              (emp2.salary > emp.salary or
               emp2.salary = emp.salary and emp2.emp_id <= emp.emp_id
              )
       ) as "row_number",
       (select 1 + count(*)
        from emp emp2
        where emp2.dept_id = emp.dept_id and
              emp2.salary > emp.salary 
              )
       ) as "rank",
       (select count(distinct salary)
        from emp emp2
        where emp2.dept_id = emp.dept_id and
              emp2.salary >= emp.salary
       ) as "dense_rank",
from emp;

假设存在,emp_id以使行对于“ row_number”而言是唯一的。



 类似资料:
  • 问题内容: 我想在不使用split的情况下拆分字符串。任何人都可以解决我遇到的问题,但是我找不到确切的逻辑。 问题答案: 我将假定这是家庭作业,因此我仅给出一些片段作为提示: 查找给定子串的所有出现的索引 这是一个与参数一起使用以查找较大字符串中所有出现的子字符串的示例: 字符串API链接 从指定的索引开始,返回指定子字符串首次出现在该字符串中的索引。如果不存在这种情况,则返回-1。 相关问题 在

  • 问题内容: 退货 (至少在Activestate Python 3.1实现上。) 我知道这是一个奇怪的对象,因此如果它出现在排序结果中的随机位置,我不会感到惊讶。但这也弄乱了容器中非南数的排序,这确实是出乎意料的。 我问了一个相关的问题有关,并根据我理解为什么是这样工作的。但这应该被视为错误吗? 文档只是说“返回一个新的排序列表”,而没有指定任何详细信息。 编辑:我现在同意这不违反IEEE标准。但

  • 问题内容: 如果我要使用DefaultServeMux(我将其指定为ListenAndServe的第二个参数来指定),那么我可以访问,您可以在Go Wiki的以下示例中看到该: 在当前代码中,我无法使用DefaultServeMux,即我将自定义处理程序传递给ListenAndServe 因此,我没有内置的代码。但是,我必须将一些授权代码修改为需要类似的授权代码。例如,如果我一直在使用Defaul

  • 问题内容: 以下App Engine处理程序在可以获取令牌的范围内起作用: 当连接到模板时,它会从Facebook获得令牌响应并愉快地显示它。但是,最好不要将用户重定向到example.com/?state=SOME_UNIQUE_VALUE&code=AQB0iYpAf8nMmX5blahblah# = 来完成登录。 有没有一种方法可以使用client.Get等来访问授权URL,遵循重​​定向,

  • 问题内容: 是否可以在不实现Comparable类的情况下使用Comparator?例如,如果我有以下内容: 然后可以使用comp比较两个对象吗?如果是这样,我将如何去做? 谢谢… 问题答案: 你不用。您使用。 是由对象实现的接口,用于指定它们与相同类型的其他对象的排序顺序。 是一个通用接口,只需要两个对象并告诉您它们的排序顺序。因此,您可以执行以下操作: 与: 和:

  • 在我的身材中。格雷德,我有一个来自组织的任务。sonarqube插件。每当我运行gradle sonarqube时,都会出现以下错误: 我在我的组织中没有SonarQube服务器的管理员权限,请让我知道如何在本地运行SonarQube analysys(预览分析),而不将结果推送到服务器 (我知道IntelliJ有一个SonarLint插件,可以在IDE中分析代码,但安装它的过程需要一个漫长的审批