3204. 按位用户权限分析

力扣题目跳转(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

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 转载请注明出处:

3204. 按位用户权限分析-优快云博客我会尽快把力扣上的所有数据库题目发出来。整数中的每一个二进制位代表一个用户拥有的一个不同的访问级别或功能。著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。这张表的每一行包含用户 ID 和他们的权限,编码为一个整数。user_id 是主键。https://blog.youkuaiyun.com/CYJ1844/article/details/144086937

我会尽快把力扣上的所有数据库题目发出来。感兴趣的可以点个赞与关注。每天不定时跟新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值