我有一个具有重复记录的数据集,并且我正在执行一个等级(作为num)来进行重复数据删除。当我对它进行分组并查看复制有多糟糕时,它是很好的。但是当我运行一个查询来获取rank=1 (where rank=1)时,查询花费的时间太长并且崩溃。
有人能给我一些见解吗?
Select num, count(*)
FROM
(SELECT
@rank :=case
WHEN concat_ws(':', @Agent, @calltime) = concat_ws(':', Agent_Name, CallStart)
Then @rank + 1
ELSE 1
END AS num,
@calltime:=CallStart AS Callstart, @Agent := Agent_Name As AgentName
FROM granular
ORDER BY Callstart, AgentName
) clean
Group by num;输出:
--------------
Num | Count(*)
--------------
1| 302419
2| 7259
3| 471
4| 43
5| 2获取一个只有rank=1的表,它会崩溃/耗时太长:
Select *
FROM
(SELECT
@rank :=case
WHEN concat_ws(':', @Agent, @calltime) = concat_ws(':', Agent_Name, CallStart)
Then @rank + 1
ELSE 1
END AS num,
@calltime:=CallStart AS Callstart, @Agent := Agent_Name As AgentName
FROM granular
ORDER BY Callstart, AgentName
) clean
WHERE num=1;https://stackoverflow.com/questions/41434199
复制相似问题