Merge branch 'main' of git.smallkun.cn:smallkun/class-notes

This commit is contained in:
smallkun 2025-03-27 08:00:02 +08:00
commit 542dd24e8d
3 changed files with 192 additions and 4 deletions

View File

@ -115,6 +115,11 @@ INSERT INTO employee (emp_name, salary, hire_date, dept_id, job_id) VALUES
创建一个存储函数 `calculate_annual_salary`,接受员工的月薪作为参数,返回其年薪(假设年薪为月薪的 12 倍)。
```c
```
#### 练习题 2: 计算员工工龄
创建一个存储函数 `calculate_years_of_service`,接受员工的入职日期作为参数,返回该员工的工龄(以年为单位)。

View File

@ -112,6 +112,53 @@ int main(){
输出样例1 0 2 0 3 5 6 8
```
```c
#include <stdio.h>
void change(int a[], int n){
int i, j, t, index=0;
for(i=1;i<n;i++){
if(a[0] > a[i]){//i当前遍历的元素下标 如果当前下标值小于中间值则进入
index++;//存储位置后移
t = a[i];//备份当前位置的值
j = i;//将当前位置的下标存储
while(j > index){//如果当前遍历位置下标大于存储位置下标则元素整体后移
a[j] = a[j-1];
j--;
}
a[index] = t;//元素整体后移后再赋值操作
}
}
for(i=0;i<n-1;i++){
if(a[i] > a[i+1]){
t = a[i];
a[i] = a[i+1];
a[i+1] = t;
}
}
}
int main(){
int len, i;
int a[100];
scanf("%d", &len);
for(i=0;i<len;i++){
scanf("%d", a+i);
}
change(a, len);
for(i=0;i<len;i++){
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
### 4 数组逆序

View File

@ -157,17 +157,18 @@ SELECT calculate_years_of_service('2023-12-31');
```sql
DELIMITER $$
DROP FUNCTION IF EXISTS calculate_avg_salary_by_dept;
CREATE FUNCTION calculate_avg_salary_by_dept(deptId INT)
CREATE FUNCTION calculate_avg_salary_by_dept(dept_id INT)
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
RETURN (
SELECT AVG(salary)
SELECT AVG(e.salary)
FROM employee e
WHERE e.dept_id = deptId
WHERE e.dept_id = dept_id
);
END $$
DELIMITER ;
SELECT calculate_avg_salary_by_dept(1);
```
@ -177,10 +178,46 @@ SELECT calculate_avg_salary_by_dept(1);
创建一个存储函数 `calculate_avg_salary_by_job`,接受职位 ID 作为参数,返回该职位的平均工资。
```sql
DELIMITER $$
DROP FUNCTION IF EXISTS calculate_avg_salary_by_job;
CREATE FUNCTION calculate_avg_salary_by_job(job_id INT)
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
RETURN (
SELECT AVG(e.salary)
FROM employee e
WHERE e.job_id = job_id
);
END $$
DELIMITER ;
SELECT calculate_avg_salary_by_job(1);
```
#### 练习题 5: 计算员工税后工资
创建一个存储函数 `calculate_net_salary`,接受员工的工资作为参数,返回其税后工资(假设税率为 15%)。
```sql
DELIMITER $$
DROP FUNCTION IF EXISTS calculate_net_salary;
CREATE FUNCTION calculate_net_salary(sal DECIMAL(10, 2))
RETURNS DECIMAL(10, 2)
DETERMINISTIC
BEGIN
RETURN sal*0.85;
END $$
DELIMITER ;
SELECT calculate_net_salary(3000);
```
#### 练习题 6: 判断员工是否满足加薪条件
创建一个存储函数 `is_eligible_for_raise`接受员工的工资和工龄作为参数返回一个布尔值1 或 0。加薪条件如下
@ -188,18 +225,117 @@ SELECT calculate_avg_salary_by_dept(1);
- 如果工资低于 60000 且工龄大于等于 3 年,返回 1满足条件
- 否则返回 0不满足条件
```sql
DELIMITER $$
DROP FUNCTION IF EXISTS is_eligible_for_raise;
CREATE FUNCTION is_eligible_for_raise(sal DECIMAL(10, 2), work_age INT)
RETURNS INT
DETERMINISTIC
BEGIN
IF sal < 60000 AND work_age >= 3 THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END $$
DELIMITER ;
SELECT is_eligible_for_raise(3000, 1);
```
#### 练习题 7: 计算部门总工资
创建一个存储函数 `calculate_total_salary_by_dept`,接受部门 ID 作为参数,返回该部门所有员工的总工资。
```sql
DELIMITER $$
DROP FUNCTION IF EXISTS calculate_total_salary_by_dept;
CREATE FUNCTION calculate_total_salary_by_dept(dept_id INT)
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
RETURN (
SELECT SUM(e.salary)
FROM employee e
WHERE e.dept_id = dept_id
);
END $$
DELIMITER ;
SELECT calculate_total_salary_by_dept(1);
```
#### 练习题 8: 计算职位总工资
创建一个存储函数 `calculate_total_salary_by_job`,接受职位 ID 作为参数,返回该职位所有员工的总工资。
```sql
DELIMITER $$
DROP FUNCTION IF EXISTS calculate_total_salary_by_job;
CREATE FUNCTION calculate_total_salary_by_job(job_id INT)
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
RETURN (
SELECT SUM(e.salary)
FROM employee e
WHERE e.job_id = job_id
);
END $$
DELIMITER ;
SELECT calculate_total_salary_by_job(1);
```
#### 练习题 9: 判断员工是否属于高薪部门
创建一个存储函数 `is_high_salary_department`,接受部门 ID 作为参数返回一个布尔值1 或 0。如果该部门的平均工资大于等于 70000返回 1高薪部门否则返回 0非高薪部门
```sql
DELIMITER $$
DROP FUNCTION IF EXISTS is_high_salary_department;
CREATE FUNCTION is_high_salary_department(dept_id INT)
RETURNS INT
DETERMINISTIC
BEGIN
IF(
SELECT AVG(e.salary)
FROM employee e
WHERE e.dept_id = dept_id
) > 70000 THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END $$
DELIMITER ;
SELECT is_high_salary_department(1);
```
#### 练习题 10: 计算员工的总收入
创建一个存储函数 `calculate_total_income`,接受员工的工资和奖金(假设奖金为工资的 10%)作为参数,返回其总收入(工资 + 奖金)。
创建一个存储函数 `calculate_total_income`,接受员工的工资和奖金(假设奖金为工资的 10%)作为参数,返回其总收入(工资 + 奖金)。
```sql
DELIMITER $$
DROP FUNCTION IF EXISTS calculate_total_income;
CREATE FUNCTION calculate_total_income(sal DECIMAL(10, 2))
RETURNS DECIMAL(10, 2)
DETERMINISTIC
BEGIN
RETURN sal*1.2;
END $$
DELIMITER ;
SELECT calculate_total_income(3000);
```