sql(3/24)

Combine Two Tables

在这里插入图片描述

/* Write your T-SQL query statement below */
SELECT FirstName, LastName, City, State
    FROM Person p
        LEFT JOIN Address a
            ON p.PersonId = a.PersonId

# Write your MySQL query statement below
SELECT FirstName, LastName, City, State
    FROM Person pp
        LEFT JOIN Address aa
            ON pp.PersonId = aa.PersonId

Second Highest Salary

在这里插入图片描述

/* Write your T-SQL query statement below */
SELECT MAX(Salary) 'SecondHighestSalary'
    FROM Employee
    WHERE Salary <> (SELECT MAX(Salary) FROM Employee)

# Write your MySQL query statement below
SELECT Max(Salary) 'SecondHighestSalary'
    FROM Employee
    WHERE Salary <> (
        SELECT MAX(Salary) FROM Employee
    )

/* Write your T-SQL query statement below */
-- 如果无第2大salary,返回为空,而不是null, -->max(Salary)
SELECT Salary 'SecondHighestSalary'
    FROM(
        SELECT *, DENSE_RANK() OVER(ORDER BY Salary DESC) rank_
            FROM Employee
    ) T
    WHERE T.rank_ = 2

# Write your MySQL query statement below
SELECT (
    SELECT DISTINCT Salary
        FROM Employee
        ORDER BY Salary DESC
        LIMIT 1 OFFSET 1
    ) AS 'SecondHighestSalary'

# IFNULL & NULLIF
/* Write your T-SQL query statement below */
SELECT NULLIF(
    (SELECT DISTINCT Salary
    FROM Employee
    ORDER BY Salary DESC
    OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY), NULL) AS 'SecondHighestSalary'
# Write your MySQL query statement below
SELECT IFNULL(
    (SELECT DISTINCT Salary
    FROM Employee
    ORDER BY Salary DESC
    LIMIT 1, 1), NULL) AS 'SecondHighestSalary';

Nth Highest Salary

CREATE FUNCTION getNthHighestSalary(@N INT) RETURNS INT AS
BEGIN
    RETURN (
        /* Write your T-SQL query statement below. */
        SELECT
            max(DISTINCT Salary)
        FROM
            (SELECT
                *, DENSE_RANK() OVER(ORDER BY Salary DESC) 'rank'
             FROM
                Employee) T
        WHERE
            T.rank=@N
    );
END


CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
    SET N := N-1;
  RETURN (
      # Write your MySQL query statement below.
      SELECT
            Salary
      FROM
            Employee
      GROUP BY
            Salary
      ORDER BY
            Salary DESC
      LIMIT N,1
  );
END

CREATE FUNCTION getNthHighestSalary(@N INT) RETURNS INT AS
BEGIN
    RETURN (
        /* Write your T-SQL query statement below. */
        SELECT
            max(Salary)
        FROM
            Employee
        GROUP BY
            Salary
        ORDER BY
            Salary DESC
        OFFSET @N-1 ROWS FETCH NEXT 1 ROWS ONLY
    );
END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值