postgresql 练习题(二)

  1. 显示部门编号、部门名字、该部门的员工数、每个部门的平均工资,部门负责人信息,包括姓名、薪水、职业;平均工资保留2位小数,千分位分隔符显示;结果按部门升序
    select employee.department_id,employee.employees,
    to_char(employee.avg_sal,'99,999.00') as avg_sal,
    department_name,manager.job_id,manager.last_name,manager.salary
    
    from (select department_id,count(*) as employees,avg(salary) as avg_sal,
    manager_id as manager
    from employees group by department_id,manager_id) employee,
    employees manager, departments
    
    where employee.manager = manager.employee_id
    and employee.department_id = departments.department_id;
  2. 显示员工数最多的部门信息,显示部门ID、名称、部门员工数,部门的主管经理姓名
    select distinct d.department_id, d.department_name,a.counts,m.first_name
    
    from employees e,departments d,employees m,
    (select  department_id did, count(department_id) counts
    
    from employees
        group by department_id
        having count(department_id) >= all (select count(department_id)
                                                 from employees
                                                 group by department_id)) a
    
     where d.department_id = a.did
     and d.manager_id=m.employee_id
  3. 显示工号、姓名、薪水、部门编号、薪资,薪资与部门平均工资的差异情况;按照部门ID排序
    select employee_id, first_name,last_name, employees.department_id, salary,
    salary - a.avg_salary as salary_chayi
    
    from (select avg(salary) as avg_salary, department_id 
            from employees
            group by department_id) a, employees
    where employees.department_id = a.department_id
    order by employees.department_id
  4. 周几录取的人数最少,显示人名和日期
    select e.employee_id,e.first_name,e.last_name,to_char(e.hire_date, 'day'),a.counts
    from employees e,
    
    (select to_char(hire_date, 'day') days,
    count(employee_id) counts
    from employees
    group by to_char(hire_date, 'day')
    
    having count(employee_id) <= all
    (select count(employee_id)from employees group by to_char(hire_date, 'day'))
    ) a
    
    where to_char(e.hire_date, 'day') = a.days
  5. 自己做练习,验证 between .. and  的外链接。
    --查询部门编号在1-50之间的员工姓名、电话、部门名称和部门编号
    
    select first_name || last_name as full_name,
    phone_number,department_name, departments.department_id
    
    from departments, employees
    where departments.manager_id = employees.manager_id
    and departments.department_id between 1 and 50;
  6. 验证rollback ;并提供例子

创建 COMPANY 表(菜鸟教程)

开始一个事务,并从表中删除 age = 25 的记录,使用 ROLLBACK 命令撤消所有的更改

检查 COMPANY 表,仍然有以下记录:

开始另一个事务,从表中删除 age = 25 的记录,使用 COMMIT 命令提交所有的更改,检查 COMPANY 表,记录已被删除:

ROLLBACK 命令是用于撤消尚未保存到数据库的事务命令,即回滚事务。

        7.查询所有hr用户下的索引

由于没有hr用户,可以查所有索引或者查一下用户自己创建的表的索引

-- 查所有索引

select * from pg_indexes

--查询用户创建的表的索引信息

select * from pg_indexes where schemaname='public'

或者直接使用\di命令直接查看

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostgreSQL中进行查询练习时,可以使用SELECT语句来检索数据。例如,要检索名为COMPANY的表中的所有数据,可以使用以下查询语句: SELECT * FROM COMPANY; 这将返回COMPANY表中的所有行和列的数据。 如果要根据特定条件进行筛选,可以使用WHERE子句。例如,要检索年龄大于30岁的员工,可以使用以下查询语句: SELECT * FROM COMPANY WHERE AGE > 30; 还可以使用ORDER BY子句对结果进行排序。例如,要按工资从高到低的顺序检索员工数据,可以使用以下查询语句: SELECT * FROM COMPANY ORDER BY SALARY DESC; 此外,还可以使用LIMIT子句限制返回的行数。例如,要检索前5个员工的数据,可以使用以下查询语句: SELECT * FROM COMPANY LIMIT 5; 这些是一些基本的查询练习示例,你可以根据需要进行进一步的练习和探索。 #### 引用[.reference_title] - *1* *2* [通俗易懂的学会SQL,30道练习题PostgreSQL基础版)](https://blog.csdn.net/weixin_41645135/article/details/124396005)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【postgreSQL 练习】](https://blog.csdn.net/weixin_43496777/article/details/125883953)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值