JMP Query Builder - come applicare la funzione "HAVING"?Ciao a tutti, ho diverse query SQL con funzionalità "HAVING". Vorrei vedere se può essere impostato in JMP Query Builder. Ho cercato in questa comunità, ma non ho visto discussioni su di essa (forse mi sono perso?). Capisco che esiste una funzionalità SQL personalizzata che può essere utilizzata per ottenere questa funzione. Ma il problema è che tutte le funzionalità interattive di JMP Query Builder non saranno più viste. Ti chiedi solo commenti / suggerimenti sull'impostazione della condizione "HAVING"? Lo script SQL tipico è il seguente. Solo la condizione "HAVING" non sembra ovvia da applicare nel builder. Le tue intuizioni saranno apprezzate!
SELECT column-names
FROM table-name
WHERE condition
GROUP BY column-names
<STRONG>HAVING condition</STRONG>
ORDER BY column-names
AltroRi: JMP Query Builder - come applicare la funzione "HAVING"?È possibile sostituire la clausola HAVING creando la propria condizione in una seconda query, unendola all'istruzione select originale e quindi filtrando il risultato.Ecco come potrebbe apparire:
SELECT a.column-names
FROM table-name a
LEFT JOIN (SELECT val, summary(condition-column) as condition
FROM table-name
GROUP BY condition-column) b
ON a.condition-column = b.condition-column
WHERE condition > 1;
Puoi testarlo in db-fiddle usando questo nello schema:
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);
e questo nella selezione:
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;
che dovrebbe assomigliare a questo:

Ri: JMP Query Builder - come applicare la funzione "HAVING"?Grazie @ih . Aiuta molto. Quindi non esiste una funzione "nascosta" in JMP Query Builder che possa realizzare direttamente la condizione "HAVING", che è equivalente al pulsante "Filter" o "Order". Ho eseguito la tabella di prova che hai allegato in questo thread. Sì, potrei ottenere lo stesso risultato della query di quello che hai mostrato. Ho riassunto 3 opzioni in JMP per fare questa funzione "HAVING": 1) Usando il modo come @ih menzionato, eseguire la query personalizzata in JMP Query Builder, notare che in questo modo nessuna parola chiave "HAVING" nello script della query.2) Eseguire la query personalizzata, con la parola chiave HAVING nello script. Per me funziona. La query personalizzata ha questo aspetto:
SELECT a.ID, a.val, Count (*) AS tot
FROM test a
GROUP BY a.val
HAVING ((Count (*)>1))
3) Utilizzare JMP Query Builder, ma con due tabelle: una è la tabella "test", l'altra è la tabella riepilogativa della tabella "test" utilizzando JMP "Summary" per colonna ("val"). In questo modo, gli utenti che non hanno familiarità con gli script SQL possono unire le due tabelle precedenti nel builder e utilizzare "Filter" per ottenere la condizione "HAVING".
Nota che l'ultimo è lo scopo iniziale. Se ci sono modi per evitare di utilizzare la seconda tabella di riepilogo e senza entrare nella query personalizzata, si prega di intervenire. Altrimenti penso che possiamo chiudere questa discussione.
Ri: JMP Query Builder - come applicare la funzione "HAVING"?Ciao TG,
Non ci sono HAVING nascosti in Query Builder, mi dispiace!Sarebbe sicuramente una considerazione per un miglioramento. A questo punto, l'editor SQL personalizzato sarebbe l'unico modo per usarlo e, come fai notare una volta che vai in quel modo, non puoi tornare alla modalità interattiva.
Brian Corcoran
Sviluppo JMP
Ri: JMP Query Builder - come applicare la funzione "HAVING"?Grazie Brian per l'aggiornamento. Sì, sarebbe bello avere questo miglioramento nelle versioni future, sebbene non sia indispensabile per le mie applicazioni come ora.