gpt4 book ai didi

mysql - 计算一列中以另一列中的值为条件的值的出现次数

转载 作者:行者123 更新时间:2023-11-29 10:44:10 26 4
gpt4 key购买 nike

我有一个包含三列的表:任务、类次和worker_ID。 tasks中的一个task可以由worker_ID中的多个worker来执行。

tasks | shift | worker_ID
------|-------|----------
111 | 127 | 233
111 | 127 | 34
111 | 127 | 455
333 | 127 | 444
333 | 127 | 34
333 | 127 | 200
333 | 127 | 100
444 | 127 | 34
444 | 127 | 567
444 | 127 | 888
666 | 125 | 100
666 | 125 | 200
666 | 125 | 345
666 | 125 | 100
555 | 125 | 34
555 | 125 | 100
555 | 125 | 457

我想创建一个 SQL 查询来计算每个特定类次中每个worker_ID 的出现次数,以返回以下附加列 (num_occ):

tasks | shift | worker_ID | num_occ
------|-------|-----------|--------
111 | 127 | 233 | 0
111 | 127 | 34 | 0
111 | 127 | 455 | 0
333 | 127 | 444 | 0
333 | 127 | 34 | 1
333 | 127 | 200 | 0
333 | 127 | 100 | 0
444 | 127 | 34 | 2
444 | 127 | 567 | 0
444 | 127 | 888 | 0
666 | 125 | 100 | 0
666 | 125 | 200 | 0
666 | 125 | 345 | 0
666 | 125 | 100 | 1
555 | 125 | 34 | 0
555 | 125 | 100 | 2
555 | 125 | 457 | 0

任何帮助将不胜感激。谢谢

最佳答案

您可以使用变量最轻松地做到这一点:

 select t.*,
(@rn := if(@ws = concat_ws(':', worker_id, shift), @rn + 1,
if(@ws := concat_ws(':', worker_id, shift), 0, 0)
)
)
from t cross join
(select @rn := -1, @ws := '') params
order by worker_id, shift;

关于mysql - 计算一列中以另一列中的值为条件的值的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44926705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com