mysql中整数列的按位分组
我有一个带有整数主键的表和一个整数列mysql中整数列的按位分组,mysql,sql,group-by,bit-manipulation,Mysql,Sql,Group By,Bit Manipulation,我有一个带有整数主键的表和一个整数列 +---------------------+-------------+ | EmployeeId | hour_bitmap | +---------------------+-------------+ | 10001 | 1 | | 10002 | 33554431 | +---------------------+-------------+ 它是
+---------------------+-------------+
| EmployeeId | hour_bitmap |
+---------------------+-------------+
| 10001 | 1 |
| 10002 | 33554431 |
+---------------------+-------------+
它是一个以小时位图形式存储员工每天工作的具体小时数的表格。
例如,第一个员工的值为1,因此他只在第0个小时工作,而员工10002的值为33554431=(1No,没有“好”的方法,因为数据结构是假的。显然有人试图过度优化SQL,并在这样做时使用非关系结构。Arrgg
你能做到吗?当然可以。这里有一个方法:
select h.hh, count(t.employeeid)
from (select 0 as hh union all select 1 union all select 2 union all select 3 . . .
select 23
) h left join
t
on t.hour_bitmap & (1 << h.hh) > 0
group by h.hh;
选择h.hh,计数(t.employeeid)
从(选择0作为hh联合所有选择1联合所有选择2联合所有选择3。
选择23
)h左连接
T
在t.hour_位图上&(10)
h.hh分组;