gpt4 book ai didi

sql - 聚合到 'plain' 查询

转载 作者:搜寻专家 更新时间:2023-10-30 20:16:23 27 4
gpt4 key购买 nike

我有一个查询,它使用聚合函数将值的 maximum absolute 分配给表中的另一列。问题是查询完成时间需要花费大量时间(大约加起来 10-15 秒)。这是查询的样子:

UPDATE calculated_table c 
SET tp = (SELECT MAX(ABS(s.tp))
FROM ts s INNER JOIN tc t ON s.id = t.id
GROUP BY s.id);

id 不是唯一的,因此分组。 tp 是一个数字整数字段。表格如下所示:

TABLE ts
PID(primary) | id (FKEY) | tp (integer)
--------------------+-----------------------------+------------------------------------------------------
1 | 2 | -100
2 | 2 | -500
3 | 2 | -1000

TABLE tc
PID(primary) | id (FKEY)
--------------------+-----------------------------+-------------------------
1 | 2

我希望输出看起来像:

TABLE c
PID(primary) | tp (integer)
--------------------+-----------------------------+--------
1 | 1000

我试着让它像这样工作:

UPDATE calculated_table c 
SET tp = (SELECT s.tp
FROM ts s INNER JOIN tc t ON s.id = t.id
ORDER BY s.tp DESC
LIMIT 1);

虽然它提高了性能,但是结果不正确..任何帮助将不胜感激?

最佳答案

我确实设法修改了查询,结果嵌套 聚合函数 不是一个好的选择。但是,如果它对任何人有帮助,这就是我最终做的事情:

UPDATE calculated_table c 
SET tp = (SELECT ABS(s.trade_position)
FROM ts s INNER JOIN tc t ON s.id = t.id
WHERE c.id = s.id
ORDER BY ABS(s.tp) DESC
LIMIT 1);

关于sql - 聚合到 'plain' 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38083425/

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