Problem
Table: Cinema
+----------------+----------+
| Column Name | Type |
+----------------+----------+
| id | int |
| movie | varchar |
| description | varchar |
| rating | float |
+----------------+----------+
id is the primary key for this table.
Each row contains information about the name of a movie, its genre, and its rating.
rating is a 2 decimal places float in the range [0, 10]
Write an SQL query to report the movies with an odd-numbered ID and a description that is not “boring”.
Return the result table ordered by rating in descending order.
The query result format is in the following example.
Examples
Example 1:
Input: Cinema table:
+----+------------+-------------+--------+
| id | movie | description | rating |
+----+------------+-------------+--------+
| 1 | War | great 3D | 8.9 |
| 2 | Science | fiction | 8.5 |
| 3 | irish | boring | 6.2 |
| 4 | Ice song | Fantacy | 8.6 |
| 5 | House card | Interesting | 9.1 |
+----+------------+-------------+--------+
Output:
+----+------------+-------------+--------+
| id | movie | description | rating |
+----+------------+-------------+--------+
| 5 | House card | Interesting | 9.1 |
| 1 | War | great 3D | 8.9 |
+----+------------+-------------+--------+
Explanation: We have three movies with odd-numbered IDs: 1, 3, and 5. The movie with ID = 3 is boring so we do not include it in the answer.
Solution
Method 1 - Using Mod Operator or Function
Code
Sql
MOD Operator:
SELECT * FROM Cinema
WHERE description != 'boring' AND id % 2 = 1
ORDER BY rating DESC;
MOD Function:
SELECT * FROM Cinema
WHERE description != 'boring' AND MOD(id, 2) != 0
ORDER BY rating DESC;
Method 2 - Using Bitwise &
Operator
Code
Sql
select * from cinema where description <> 'boring' and id & 1 = 1 order by rating DESC