JMP Query Builder: ¿cómo aplicar la función "TENER"?Hola a todos, tengo varias consultas SQL con características "TENIENDO". Me gustaría ver si se puede configurar en JMP Query Builder. Busqué en esta comunidad, pero no vi discusiones sobre ella (¿tal vez me perdí?). Entiendo que hay una función SQL personalizada que se puede utilizar para lograr esta función. Pero el problema es que, de esa manera, ya no se verán todas las características interactivas de JMP Query Builder. ¿Quiere hacer algún comentario / sugerencia sobre la configuración de la condición "TENIENDO"? El script SQL típico es el siguiente. Solo la condición "TENIENDO" parece no ser obvia para aplicar en el constructor. ¡Tus ideas serán apreciadas!
SELECT column-names
FROM table-name
WHERE condition
GROUP BY column-names
<STRONG>HAVING condition</STRONG>
ORDER BY column-names
OtroRe: JMP Query Builder - ¿cómo aplicar la función "TENER"?Puede reemplazar la cláusula HAVING creando su condición en una segunda consulta, uniéndola a su declaración de selección original y luego filtrando el resultado.Así es como podría verse:
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;
Podrías probar esto en db-violín usando esto en el esquema:
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);
y esto en el selecto:
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;
que debería verse algo como esto:

Re: JMP Query Builder - ¿cómo aplicar la función "TENER"?Gracias @ih . Esto ayuda mucho. Por lo tanto, no hay una función "oculta" en JMP Query Builder que pueda cumplir la condición "TENIENDO" directamente, lo que equivale al botón "Filtro" o "Orden". Ejecuté la tabla de prueba que adjuntaste en este hilo. Sí, podría obtener el mismo resultado de consulta que mostró. Resumí 3 opciones en JMP para hacer esta función "TENIENDO": 1) Usando la forma como @ih mencionado, ejecute la consulta personalizada en JMP Query Builder, tenga en cuenta que de esta manera no hay palabra clave "HAVING" en el script de consulta.2) Ejecute la consulta personalizada, con la palabra clave HAVING en el script. Esto funciona para mi. La consulta personalizada se ve así:
SELECT a.ID, a.val, Count (*) AS tot
FROM test a
GROUP BY a.val
HAVING ((Count (*)>1))
3) Use JMP Query Builder, pero con dos tablas: una es la tabla de "prueba", la otra es la tabla de resumen de la tabla de "prueba" que usa "Resumen" de JMP por columna ("val"). De esta manera, los usuarios que no están familiarizados con los scripts SQL pueden unir las dos tablas anteriores en el constructor y usar "Filtro" para lograr la condición "TENIENDO".
Tenga en cuenta que el último es el propósito inicial. Si hay formas de evitar el uso de la segunda tabla de resumen y sin entrar en una consulta personalizada, intervenga. De lo contrario, creo que podemos cerrar esta discusión.
Re: JMP Query Builder - ¿cómo aplicar la función "TENER"?Hola TG,
No hay ningún HAVING oculto en Query Builder, ¡lo siento!Sin duda, sería una consideración para una mejora. En este momento, el editor de SQL personalizado sería la única forma de usarlo y, como señala, una vez que vaya por ese camino, no podrá volver al modo interactivo.
Brian Corcoran
Desarrollo JMP
Re: JMP Query Builder - ¿cómo aplicar la función "TENER"?Gracias Brian por la actualización. Sí, sería bueno tener esta mejora en las versiones futuras, aunque no es imprescindible para mis aplicaciones como ahora.