我编写了以下查询以获取代码字段等于最后一个代码字段的次数。与此同时,我是MySQL中这种语法(使用变量)的完全新手。
select
@lastCode:= ts.code as lastCode,
@count:= 0 as count,
ts.id,
ts.date,
ts.code,
if( @lastShiftCode = ts.shift_code, @count := @count + 1, @count:= 0) as occurences
from
empCodes ts
WHERE
ts.date between '2018-01-01' and '2018-02-01'
order by
ts.id,
ts.date
查询运行,但计数从不会从0更改,并且事件都不会从1更改。我预计每次出现的次数会增加一次。
这是输出的一部分
lastCode count id date code occurrences
XX1 0 2 01/02/2018 XX1 1
XX1 0 2 02/02/2018 XX1 1
XX1 0 2 05/02/2018 XX1 1
XX1 0 2 06/02/2018 XX1 1
XX1 0 2 07/02/2018 XX1 1
XX1 0 2 08/02/2018 XX1 1
XX1 0 2 09/02/2018 XX1 1
答案 0 :(得分:0)
试试这个:
SELECT ts.id, ts.date, SUM(ts.lastCode=ts.code) `count`
FROM empCodes ts
WHERE ts.date BETWEEN STR_TO_DATE('2018-01-01','%Y-%m-%d')
AND STR_TO_DATE('2018-02-01','%Y-%m-%d')
GROUP BY ts.id, ts.date;