力扣题目跳转(3204. 按位用户权限分析 - 力扣(LeetCode))
表:
user_permissions
+-------------+---------+ | Column Name | Type | +-------------+---------+ | user_id | int | | permissions | int | +-------------+---------+ user_id 是主键。 这张表的每一行包含用户 ID 和他们的权限,编码为一个整数。
题目要求:
permissions
整数中的每一个二进制位代表一个用户拥有的一个不同的访问级别或功能。
编写一个解决方案来计算以下内容:
- common_perms:授予 所有用户 的访问级别。在
permissions
列上使用 按位与 操作来计算。 - any_perms:授予 任一用户 的访问级别。在
permissions
列上使用 按位或 操作来计算。
以 任意 顺序返回结果表。
结果格式如下所示。
示例:
输入:
user_permissions 表:
+---------+-------------+ | user_id | permissions | +---------+-------------+ | 1 | 5 | | 2 | 12 | | 3 | 7 | | 4 | 3 | +---------+-------------+输出:
+-------------+--------------+ | common_perms | any_perms | +--------------+-------------+ | 0 | 15 | +--------------+-------------+解释:
- common_perms: 代表所有权限的按位与结果:
- 对于用户 1 (5): 5 (二进制 0101)
- 对于用户 2 (12): 12 (二进制 1100)
- 对于用户 3 (7): 7 (二进制 0111)
- 对于用户 4 (3): 3 (二进制 0011)
- 按位与:5 & 12 & 7 & 3 = 0 (二进制 0000)
- any_perms: 代表所有权限的按位或结果:
- 按位或:5 | 12 | 7 | 3 = 15 (二进制 1111)
case 1 的建表语句。
Create table if not exists user_permissions(user_id int, permissions int)
Truncate table user_permissions
insert into user_permissions (user_id, permissions) values ('1', '5')
insert into user_permissions (user_id, permissions) values ('2', '12')
insert into user_permissions (user_id, permissions) values ('3', '7')
insert into user_permissions (user_id, permissions) values ('4', '3')
一 考你内置函数,直接使用即可,如果不知道可以上网搜下。
select bit_and(permissions) as common_perms, bit_or(permissions) as any_perms from user_permissions;
输出如下
以上就是全部答案,如果对你有帮助请点个赞,谢谢。
来源:力扣(leecode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
转载请注明出处:
我会尽快把力扣上的所有数据库题目发出来。感兴趣的可以点个赞与关注。每天不定时跟新。