狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

數據工程師面試中最常問的復雜SQL查詢

admin
2023年11月16日 23:2 本文熱度 563

一、示例數據表

1.1 假設我們有一張示例數據表“employees”,包含以下列:

  • id:每個員工的唯一標識符

  • name:員工姓名

  • gender:員工性別

  • salary:員工工資

  • department:員工所在部門

1.2 下面是創建employees表并插入樣本數據的MySQL腳本:

create TABLE employees(    id         INT AUTO_INCREMENT PRIMARY KEY,    name       VARCHAR(50) NOT NULL,    gender     VARCHAR(10) NOT NULL,    salary     INT         NOT NULL,    department VARCHAR(50) NOT NULL);
insert INTO employees (name, gender, salary, department)VALUES ('Ramesh Gupta', 'Male', 55000, 'Sales'),       ('Priya Sharma', 'Female', 65000, 'Marketing'),       ('Sanjay Singh', 'Male', 75000, 'Sales'),       ('Anjali Verma', 'Female', 45000, 'Finance'),       ('Rajesh Sharma', 'Male', 80000, 'Marketing'),       ('Smita Patel', 'Female', 60000, 'HR'),       ('Vikram Yadav', 'Male', 90000, 'Sales'),       ('Neha Sharma', 'Female', 55000, 'Marketing'),       ('Rahul Singh', 'Male', 70000, 'Finance'),       ('Sonali Gupta', 'Female', 50000, 'Sales');

Employees 表

二、查詢

2.1 查詢每個部門中男女職工的平均薪水

實現方案

select department, gender, AVG(salary) AS avg_salary
from employees
GROUP BY department, gender;

輸出

2.2 查詢每個部門中薪水最高的員工姓名及薪水

實現方案

select name, salary
from employees
where (department, salary) IN (select department, MAX(salary)
from employees
GROUP BY department);

輸出:

2.3 查詢每個部門中比所在部門平均薪水高的員工信息

實現方案

select name, salary, department
from employeeswhere salary > (select AVG(salary)
                from employees AS e2
                where e2.department = employees.department);

輸出:

2.4 查詢每個部門中薪水前三名的員工信息

實現方案

select e.department, e.name, e.salary
from employees e
where (select COUNT(*)
       from employees
       where department = e.department
         AND salary > e.salary) < 3;

輸出:

2.5 查詢每個部門中比所在部門平均薪水高的員工姓名(該問題與第三個問題一樣,只不過這里使用連接實現)

實現方案

select e.namefrom employees e
         JOIN (select department, AVG(salary) AS avg_salary
               from employees
               GROUP BY department) AS dept_avg
              ON e.department = dept_avg.department
where e.salary > dept_avg.avg_salary;

輸出:

2.6 查詢每個部門中最高薪水的員工信息

實現方案

WITH max_salary AS (select department, MAX(salary) AS highest_salary
                    from employees
                    GROUP BY department)
select m.department, e.name, e.salaryfrom employees e
         JOIN max_salary m
              ON e.department = m.department AND e.salary = m.highest_salary;


輸出

該實現需要MySQL 8.0及以上版本才可運行,因為WITH...AS...子句只有8.0及以上版本才支持。


該文章在 2023/11/16 23:02:23 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved