【发布时间】:2021-02-10 07:04:17
【问题描述】:
使用下面提到的脚本生成 100 万行报告需要将近 2 天的时间,因此,如果有人可以帮助我使用可以在 10-15 分钟内生成报告的不同脚本,非常感谢。
报告要求如下;
表“cover”包含 500 万行和 6 列数据,同样表“数据”包含 500,000 行和 6 列。
因此,表格封面中的每个行数都必须经过表格日期并提供最大匹配项。
例如,如下表所述,第 1 行可能有 3 个匹配项,第 2 行有 2 个匹配项,第 3 行有 5 个匹配项,因此脚本必须选择最大选择,即第 5 行#3。
UPDATE public.cover_sheet AS fc
SET maxmatch = (SELECT MAX(tmp.mtch)
FROM (
SELECT (SELECT CASE WHEN fc.a=drwo.a THEN 1 ELSE 0 END) +
(SELECT CASE WHEN fc.b=drwo.b THEN 1 ELSE 0 END) +
(SELECT CASE WHEN fc.c=drwo.c THEN 1 ELSE 0 END) +
(SELECT CASE WHEN fc.d=drwo.d THEN 1 ELSE 0 END) +
(SELECT CASE WHEN fc.e=drwo.e THEN 1 ELSE 0 END) +
(SELECT CASE WHEN fc.f=drwo.f THEN 1 ELSE 0 END) AS mtch
FROM public.data AS drwo
) AS tmp)
WHERE fc.code>0;
SELECT *
FROM public.cover_sheet AS fc
WHERE fc.maxmatch>0;
【问题讨论】:
-
选择太多!!!什么 DBMS?
-
完全不清楚这应该做什么。请edit您的问题(通过单击其下方的edit 链接)并添加一些示例数据和基于该数据的预期输出为formatted text。请参阅here,了解有关如何创建漂亮的文本表格的一些提示。 (edit 您的问题 - 不要在 cmets 中输入代码或其他信息)
-
我已经编辑了这个问题并进行了一些澄清,如果您能提供一个脚本来解决我的要求,请不胜感激
标签: sql postgresql sql-update