JMP 查询生成器——如何应用“HAVING”功能?大家好,我有几个带有“HAVING”功能的 SQL 查询。我想看看是否可以在 JMP 查询生成器中设置。我搜索了这个社区,但没有看到有关它的讨论(也许我错过了?)。据我了解,有一个自定义 SQL 功能可用于实现此功能。但问题是这样一来,所有优秀的 JMP 查询生成器交互功能将不再可见。只是想知道有关设置“HAVING”条件的任何意见/建议吗?典型的 SQL 脚本如下。只有“HAVING”条件似乎不适用于构建器。您的见解将不胜感激!
SELECT column-names
FROM table-name
WHERE condition
GROUP BY column-names
<STRONG>有条件</STRONG>
ORDER BY column-names
数据存取回复:JMP 查询生成器——如何应用“HAVING”功能?谢谢布赖恩的更新。 是的,如果在未来的版本中有这个增强功能会很好,但对于我的应用程序来说不是必须的,就像现在一样。回复:JMP 查询生成器——如何应用“HAVING”功能?嗨,TG,
查询生成器中没有隐藏 HAVING,抱歉!这肯定是一个增强的考虑。 目前,自定义 SQL 编辑器将是使用它的唯一方式,正如您所指出的那样,一旦您采用这种方式就无法返回交互模式。
布赖恩·科科伦
JMP开发
回复:JMP 查询生成器——如何应用“HAVING”功能?谢谢@ih . 它有很大帮助。 因此,JMP 查询生成器中没有可以直接完成“HAVING”条件的“隐藏”功能,相当于“筛选”或“排序”按钮。 我运行了您在此线程中附加的测试表。 是的,我可以获得与您显示的相同的查询结果。 我在 JMP 中总结了 3 个选项来执行此“HAVING”功能:1)使用方式@ih提到过,在 JMP 查询生成器中运行自定义查询,请注意,以这种方式在查询脚本中没有“HAVING”关键字。2) 运行自定义查询,在脚本中使用 HAVING 关键字。 这个对我有用。 自定义查询如下所示:
SELECT a.ID, a.val, Count (*) AS tot
FROM test a
GROUP BY a.val
HAVING ((Count (*)>1))
3) 使用 JMP 查询生成器,但有两个表:一个是“测试”表,另一个是使用 JMP“汇总”列(“val”)的“测试”表的汇总表。 这样,不熟悉SQL脚本的用户可以在构建器中加入上述两张表,使用“Filter”实现“HAVING”条件。
请注意,最后一个是最初的目的。 如果有办法避免使用第二个汇总表,并且不进入自定义查询,请插话。 否则我认为我们可以结束讨论。
回复:JMP 查询生成器——如何应用“HAVING”功能?您可以通过在第二个查询中创建您的条件,将其加入您的原始选择语句,然后过滤结果来替换 HAVING 子句。这可能是这样的:
SELECT a.column-names
FROM table-name a
LEFT JOIN (SELECT condition-group-column, summary(condition-summarized-column) as condition
FROM table-name
GROUP BY condition-group-column) b
ON a.condition-column = b.condition-column
WHERE condition > 1;
你可以测试这个数据库小提琴在架构中使用它:
CREATE TABLE test (
id INT, val INT
);
INSERT INTO test (id, val) VALUES (1, 10);
INSERT INTO test (id, val) VALUES (2, 10);
INSERT INTO test (id, val) VALUES (3, 20);
INSERT INTO test (id, val) VALUES (4, 30);
INSERT INTO test (id, val) VALUES (5, 30);
这在选择中:
SELECT a.ID, a.val, b.tot
FROM test a
LEFT JOIN (SELECT val, count(id) as tot
FROM test
GROUP BY val) b
ON a.val = b.val
WHERE tot > 1;
它应该看起来像这样:
