我有一个包含整数主键和整数列的表。
+---------------------+-------------+
| EmployeeId | hour_bitmap |
+---------------------+-------------+
| 10001 | 1 |
| 10002 | 33554431 |
+---------------------+-------------+
它是一个表,用于存储员工每天工作的特定小时数。 例如,对于第一个雇员具有值1,因此他仅在第0小时工作,而雇员10002具有值33554431 =(1 <&lt; 25)-1,其比特序列是1 ... 24倍所以他24小时都在工作。
mysql中的hourId上是否存在groupby方法?
答案 0 :(得分:3)
不,没有“好”的方式,因为数据结构是虚假的。有人显然试图过度优化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;