• 【lc-database】181. 超过经理收入的员工


    Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。

    ±—±------±-------±----------+

    | Id | Name | Salary | ManagerId |

    ±—±------±-------±----------+

    | 1 | Joe | 70000 | 3 |

    | 2 | Henry | 80000 | 4 |

    | 3 | Sam | 60000 | NULL |

    | 4 | Max | 90000 | NULL |

    ±—±------±-------±----------+

    给定 Employee 表,编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。

    ±---------+

    | Employee |

    ±---------+

    | Joe |

    ±---------+

    1.使用where + 内连接

    select * from employee as a,employee b;//笛卡尔积
    
    select * from employee as a,employee b where a.managerId =  b.id and a.salary > b.salary;//筛选条件
    
    select a.name as Employee from employee as a,employee b where a.managerId =  b.id and a.salary > b.salary;
    

    2.join on + 内连接

    select  a.name as Employee from employee as a join employee b on a.managerId = b.id  and a.salary > b.salary;
    
  • 相关阅读:
    算法题-数组算法题
    Linux-shell脚本的调试和追踪
    Linux-循环loop
    Linux-条件判断式
    Linux-第一行#!/bin/bash的含义
    Linux-排序命令:sort、wc、uniq
    Linux-选取命令:cut grep
    Linux-shell变量
    Linux-重定向、追加、tee
    Linux三剑客-sed编辑文本
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860758.html
Copyright © 2020-2023  润新知