ql/sql---子查询练习01

本文介绍了使用SQL进行复杂查询的方法,包括查询工资最低的员工信息、平均工资最低的部门、平均工资最高的工作类别等,并展示了如何利用子查询和聚合函数实现这些查询。
--1,查询工资最低的员工信息:last_name,salary

select last_name,salary
from employees
where salary=(select min(salary)
              from employees
              )
              
--2,查询平均工资最低的部门信息

--1.查询公司中各部门的平均工资是多少

select svg(salary)
from employees
group by department_id

--2.查询公司中各部门的平均工资中最少

select min(svg(salary))
from employees
group by department_id

--3.哪个部门的平均工资=2.结果

select department_id
from employees
having avg(salary)=(
                    select min(svg(salary))
                    from employees
                    group by department_id
                   )
group by department_id;

--4.查询此部门的部门信息

select *
from departments
where department_id=(
                      select department_id
                      from employees
                      having avg(salary)=(
                                          select min(svg(salary))
                                          from employees
                                          group by department_id
                                         )
                      group by department_id;
                    )
                    
--3,查询平均工资最低的部门信息和该部门的平均工资

select d.*,(select avg(salary) from employees where department=d.department_id)
from departments d
where department_id=(
                      select department_id
                      from employees
                      having avg(salary)=(
                                          select min(svg(salary))
                                          from employees
                                          group by department_id
                                         )
                      group by department_id;
                    )

--4,查询平均工资最高的job信息

--1.按job来分组,查询最高的平均工资是多少

select max(avg(salary))
from employees
group by job_id

--2.查询得到哪个job_id平均工资等于1.得到的值

select job_id
from employees
where avg(salary)=(
                    select max(avg(salary))
                    from employees
                    group by job_id
                  )
group by job_id

--3.从jobs表中返回job_id的对应项的信息

select *
from jobs
where job_id in (
                select job_id
                from employees
                having avg(salary)=(
                                    select max(avg(salary))
                                    from employees
                                    group by job_id
                                  )
                group by job_id
             )
             
--5,查询平均工资高于公司平均工资的部门有哪些

select department_id,avg(salary)
from employees
group by department_id
having avg(salary)>(
                    select avg(salary)
                    from employees
                   )

--6.查询吃公司中所有manager的详情信息

select *
from employees
where employee_id in (
                      select manager_id
                      from employees
                     )
                     
--7.各部门中最高工资中最低的那个部门的最低工资是多少

select min(salary)
from employees
where department_id=(
                     select department_id
                     from employees
                     having max(salary)=(
                                          select min(max(salary))
                                          from employees
                                          group by department_id
                                        )
                                        group by department_id
                    )
                    
--8,查询平均工资最高的部门的manager的详情信息:
--last_name,department_id,email,salary

select last_name,department_id,email,salary
from employees
where employees_id in (
                      select distinct manager_id
                      from employees
                      where separtment_id=(
                                            select department_id
                                            from employees
                                            group by department_id
                                            having avg(salary)=(
                                                                select max(avg(salary))
                                                                from employees
                                                                group by department_id
                                                               )
                                          )
                     )

--9,查询1999年来公司的员工中最高工资的那个员工的信息

select * 
from employees
where salary = (
                select max(salary)
                from enployees
                where to_char(hire_date,'1999') 
               )
and to_char(hire_date,'yyyy')='1999'

 

<think>我们正在处理用户的问题:用户试图导入Zabbix的PostgreSQL数据库模式,但在执行命令时遇到了错误,提示文件不存在。 错误信息:`zcat /usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix error: No such file or directory` 根据引用[1]、[2]、[3]和[4]提供的线索,我们可以分析问题所在。 首先,引用[1]中给出的命令是:`# zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix` 而用户执行的命令中路径为:`/usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz` 注意:两个路径的差异在于一个是`/usr/share/zabbix-sql-scripts/...`,另一个是`/usr/share/doc/zabbix-sql-scripts/...`。 因此,问题可能在于文件安装的位置不在`/usr/share/doc`下,而是在`/usr/share`下。 另外,引用[2]和[3]分别提到了安装的包- Ubuntu/Debian: `zabbix-server-pgsql`, `zabbix-frontend-php`, `php8.3-pgsql`, `zabbix-apache-conf`, `zabbix-sql-scripts`, `zabbix-agent` - RHEL/CentOS: `zabbix-server-pgsql`, `zabbix-web-pgsql`, `zabbix-nginx-conf`, `zabbix-sql-scripts`, `zabbix-selinux-policy`, `zabbix-agent` 其中,`zabbix-sql-scripts`包提供了SQL脚本。 所以,我们需要确认SQL脚本的实际安装路径。 在Debian/Ubuntu系统中,`zabbix-sql-scripts`包安装的SQL脚本通常位于`/usr/share/zabbix-sql-scripts`目录下。 而`/usr/share/doc`目录通常存放文档,不是脚本。 因此,用户应该使用的正确路径是:`/usr/share/zabbix-sql-scripts/postgresql/server.sql.gz` 解决方案: 1. 检查文件是否存在:`ls /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz` 2. 如果存在,使用正确的命令导入: `zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix` 如果文件在`/usr/share/zabbix-sql-scripts/postgresql/`目录下不存在,那么可能是包没有正确安装。需要重新安装`zabbix-sql-scripts`包。 安装步骤(以Ubuntu为例): - 更新包列表:`sudo apt update` - 安装`zabbix-sql-scripts`:`sudo apt install zabbix-sql-scripts` 安装后,再次检查文件是否存在。 另外,引用[4]提供了Zabbix官网的安装步骤,用户也可以参考官网步骤确认。 总结:用户遇到的错误是因为路径错误,应该使用`/usr/share/zabbix-sql-scripts`而不是`/usr/share/doc/zabbix-sql-scripts`。 因此,我们给出以下回答:</think>根据您的错误提示,问题在于SQL文件路径不正确。以下是解决方案和步骤: ### 问题原因 错误信息 `No such file or directory` 表明系统在 `/usr/share/doc/zabbix-sql-scripts/postgresql/` 路径下找不到 `server.sql.gz` 文件。这通常是因为: 1. **路径错误**:Zabbix SQL脚本的实际安装路径是 `/usr/share/zabbix-sql-scripts/`(缺少 `doc` 目录) 2. **包未安装**:`zabbix-sql-scripts` 包可能未正确安装 ### 解决步骤 #### 1. 验证文件路径 执行以下命令检查正确路径: ```bash ls /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz ``` 如果文件存在,继续步骤3;如果不存在,执行步骤2。 #### 2. 重新安装SQL脚本包 根据您的系统选择命令: - **Debian/Ubuntu**: ```bash sudo apt reinstall zabbix-sql-scripts # 引用[2] ``` - **RHEL/CentOS**: ```bash sudo dnf reinstall zabbix-sql-scripts # 引用[3] ``` #### 3. 执行正确的导入命令 ```bash zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix # 引用[1] ``` > **注意**:确保数据库 `zabbix` 已提前创建,且当前用户有操作权限。 #### 4. 验证导入结果 ```bash echo "SELECT COUNT(*) FROM users;" | sudo -u zabbix psql zabbix ``` 正常应返回用户表记录数(初始安装应 > 0)。 ### 常见问题排查 | 问题现象 | 解决方案 | |---------|---------| | 仍提示文件不存在 | 运行 `dpkg -L zabbix-sql-scripts`(Debian)或 `rpm -ql zabbix-sql-scripts`(RHEL)查找真实路径 | | 数据库连接失败 | 检查PostgreSQL服务状态:`sudo systemctl status postgresql` | | 权限不足 | 确保zabbix用户有DB访问权限:`sudo -u postgres psql -c "GRANT ALL ON DATABASE zabbix TO zabbix;"` | 完整安装指南请参考 [Zabbix官方文档](https://www.zabbix.com/cn/download?zabbix=6.0&os_distribution=ubuntu&os_version=20.04_focal&db=postgresql&ws=apache) [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值