diff --git a/2208/存储函数练习题.md b/2208/存储函数练习题.md index f4ce487..fa0d984 100644 --- a/2208/存储函数练习题.md +++ b/2208/存储函数练习题.md @@ -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`,接受员工的入职日期作为参数,返回该员工的工龄(以年为单位)。 diff --git a/最后一舞/C语言基础进阶合集版编程题.md b/最后一舞/C语言基础进阶合集版编程题.md index 3719f6a..d2244d4 100644 --- a/最后一舞/C语言基础进阶合集版编程题.md +++ b/最后一舞/C语言基础进阶合集版编程题.md @@ -112,6 +112,53 @@ int main(){ 输出样例:1 0 2 0 3 5 6 8 ``` + ```c + #include + void change(int a[], int n){ + int i, j, t, index=0; + + for(i=1;i 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 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= 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%)作为参数,返回其总收入(工资 + 奖金)。 \ No newline at end of file +创建一个存储函数 `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); +``` +