JMP Query Builder – wie wendet man die „HAVING“-Funktion an?Hallo zusammen, ich habe mehrere SQL-Abfragen mit „HAVING“-Funktionen. Ich würde gerne sehen, ob es im JMP Query Builder eingestellt werden kann. Ich habe diese Community durchsucht, aber keine Diskussionen dazu gefunden (vielleicht habe ich sie übersehen?). Ich verstehe, dass es eine benutzerdefinierte SQL-Funktion gibt, mit der diese Funktion erreicht werden kann. Das Problem besteht jedoch darin, dass auf diese Weise alle netten interaktiven Funktionen des JMP Query Builder nicht mehr angezeigt werden. Ich frage mich nur, ob es Kommentare/Vorschläge zum Einrichten der „HAVING“-Bedingung gibt? Ein typisches SQL-Skript sieht wie folgt aus. Nur die Bedingung „HAVING“ scheint im Builder nicht offensichtlich anwendbar zu sein. Ihre Erkenntnisse werden geschätzt!
SELECT column-names
FROM table-name
WHERE condition
GROUP BY column-names
<STRONG>HABENder Zustand</STRONG>
ORDER BY column-names
DatenzugriffBetreff: JMP Query Builder – wie wendet man die „HAVING“-Funktion an?Danke Brian für das Update. Ja, es wäre schön, diese Erweiterung in zukünftigen Versionen zu haben, obwohl sie für meine Anwendungen nicht wie jetzt ein Muss ist.Betreff: JMP Query Builder – wie wendet man die „HAVING“-Funktion an?Hallo TG,
Es gibt kein verstecktes HAVING im Query Builder, sorry!Eine Erweiterung wäre sicherlich eine Überlegung wert. Zu diesem Zeitpunkt wäre der benutzerdefinierte SQL-Editor die einzige Möglichkeit, ihn zu verwenden, und wie Sie darauf hinweisen, können Sie nach dieser Vorgehensweise nicht mehr in den interaktiven Modus zurückkehren.
Brian Corcoran
JMP-Entwicklung
Betreff: JMP Query Builder – wie wendet man die „HAVING“-Funktion an?Danke @ich h . Es hilft sehr. Daher gibt es in JMP Query Builder keine „versteckte“ Funktion, die die Bedingung „HAVING“ direkt ausführen kann, was der Schaltfläche „Filter“ oder „Bestellen“ entspricht. Ich habe die Testtabelle ausgeführt, die Sie in diesem Thread angehängt haben. Ja, ich könnte das gleiche Abfrageergebnis erhalten wie das, was Sie gezeigt haben. Ich habe 3 Optionen in JMP zusammengefasst, um diese "HAVING"-Funktion auszuführen: 1) Verwenden Sie den Weg als @ich h Wie bereits erwähnt, führen Sie die benutzerdefinierte Abfrage in JMP Query Builder aus. Beachten Sie, dass auf diese Weise kein Schlüsselwort "HAVING" im Abfrageskript vorhanden ist.2) Führen Sie die benutzerdefinierte Abfrage mit dem Schlüsselwort HAVING im Skript aus. Für mich geht das. Die benutzerdefinierte Abfrage sieht folgendermaßen aus:
SELECT a.ID, a.val, Count (*) AS tot
FROM test a
GROUP BY a.val
HAVING ((Count (*)>1))
3) Verwenden Sie JMP Query Builder, aber mit zwei Tabellen: eine ist die „Test“-Tabelle, die andere ist die Zusammenfassungstabelle der „Test“-Tabelle, die JMP „Summary“ nach Spalte („val“) verwendet. Auf diese Weise können Benutzer, die mit SQL-Skripten nicht vertraut sind, die beiden obigen Tabellen im Builder zusammenführen und „Filter“ verwenden, um die Bedingung „HAVING“ zu erreichen.
Beachten Sie, dass der letzte der ursprüngliche Zweck ist. Wenn es Möglichkeiten gibt, die Verwendung der zweiten Zusammenfassungstabelle zu vermeiden, und ohne eine benutzerdefinierte Abfrage durchzuführen, melden Sie sich bitte. Ansonsten denke ich, können wir diese Diskussion schließen.
Betreff: JMP Query Builder – wie wendet man die „HAVING“-Funktion an?Sie könnten die HAVING-Klausel ersetzen, indem Sie Ihre Bedingung in einer zweiten Abfrage erstellen, diese mit Ihrer ursprünglichen select-Anweisung verbinden und dann das Ergebnis filtern.So könnte das aussehen:
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;
Das könntest du mal testen db-Geige Verwenden Sie dies im Schema:
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);
und das in der Auswahl:
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;
das sollte in etwa so aussehen:
