반응형
목차
문제
Table: Employees
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| employee_id | int |
| name | varchar |
| salary | int |
+-------------+---------+
employee_id is the primary key for this table.
Each row of this table indicates the employee ID, employee name, and salary.
Write an SQL query to calculate the bonus of each employee. The bonus of an employee is 100% of their salary if the ID of the employee is an odd number and the employee name does not start with the character 'M'. The bonus of an employee is 0 otherwise.
Return the result table ordered by employee_id.
The query result format is in the following example.
Example 1:
Input:
Employees table:
+-------------+---------+--------+
| employee_id | name | salary |
+-------------+---------+--------+
| 2 | Meir | 3000 |
| 3 | Michael | 3800 |
| 7 | Addilyn | 7400 |
| 8 | Juan | 6100 |
| 9 | Kannon | 7700 |
+-------------+---------+--------+
Output:
+-------------+-------+
| employee_id | bonus |
+-------------+-------+
| 2 | 0 |
| 3 | 0 |
| 7 | 7400 |
| 8 | 0 |
| 9 | 7700 |
+-------------+-------+
Explanation:
The employees with IDs 2 and 8 get 0 bonus because they have an even employee_id.
The employee with ID 3 gets 0 bonus because their name starts with 'M'.
The rest of the employees get a 100% bonus.
풀이
# Write your MySQL query statement below
select
employee_id
,if(employee_id%2 = 1 and name not like 'M%', salary, 0) as bonus
from Employees
order by employee_id asc
/* Write your PL/SQL query statement below */
select
employee_id
,case when mod(employee_id,2) = 1 and name not like 'M%' then salary
else 0 end
as bonus
from Employees
order by employee_id asc;
-- 동일 연산 문법 차이 잘 확인하기.
반응형
'코딩테스트 > SQL 문제풀이' 카테고리의 다른 글
[MySQL/Oracle] 진료과별 총 예약 횟수 출력하기 (0) | 2022.11.12 |
---|---|
[MySQL/Oracle] 627. Swap Salary (0) | 2022.11.11 |
[MySQL/Oracle] 1693. Daily Leads and Partners (0) | 2022.11.08 |
[MySQL/Oracle] 1741. Find Total Time Spent by Each Employee (0) | 2022.11.08 |
[MySQL] 중복 제거하기 (0) | 2022.11.08 |
댓글