mysql中查询每个部门提成的总额,没有提成的(为NULL的)人先补发50,按照部门编号降序排序.
时间: 2024-02-18 19:00:42 浏览: 29
可以使用以下 SQL 语句实现:
```
SELECT department_id, IFNULL(SUM(commission), 50*COUNT(*)) AS total_commission
FROM employees
GROUP BY department_id
ORDER BY department_id DESC;
```
解析:
- 使用 `SELECT` 语句查询部门编号和提成总额。
- `IFNULL` 函数用于判断提成总额是否为 NULL,如果是 NULL,则表示该部门没有提成的人,将其补发 50 元,即使用 `COUNT(*)` 函数统计该部门员工总数,并乘以 50。
- 使用 `SUM` 函数计算每个部门的提成总额。
- 使用 `GROUP BY` 语句将结果按照部门编号分组。
- 使用 `ORDER BY` 语句将结果按照部门编号降序排序。
相关问题
mysql查询在表中每个部门入职时间最早的姓名、工号和部门
好的,针对您的问题,您可以使用以下的 SQL 语句来查询在表中每个部门入职时间最早的姓名、工号和部门:
```
SELECT t1.name, t1.job_id, t1.department
FROM employee t1
INNER JOIN (
SELECT department, MIN(hire_date) AS min_hire_date
FROM employee
GROUP BY department
) t2 ON t1.department = t2.department AND t1.hire_date = t2.min_hire_date;
```
这个查询语句使用了内连接(INNER JOIN),并且使用了子查询来获取每个部门的最早入职时间。在子查询中,我们使用了 GROUP BY 语句来按照部门进行分组,并且使用了 MIN 函数来获取每个部门的最早入职时间。然后,在主查询中,我们使用了 ON 子句来连接两个表并且使用了 WHERE 子句来过滤出每个部门的最早入职员工。最终,我们选择了每个部门的名字、工号和部门名。
希望以上的回答能够帮助到您!
MySQL查询不同班级中不同性别的最高学分,按照学分降序排序
可以使用如下 SQL 语句实现:
SELECT class, gender, MAX(credit) AS max_credit
FROM student
GROUP BY class, gender
ORDER BY max_credit DESC;
其中,student 表包含学生的信息,包括班级、性别、学分等字段。以上 SQL 语句会按照班级和性别分组,计算每个班级中每个性别的最高学分,并按照学分降序排序。