resta - subtract mysql query
Resta entre dos consultas de sql (9)
Tengo 2 consultas en MS SQL que devuelven una serie de resultados utilizando la función COUNT.
Puedo ejecutar la primera consulta y obtener el primer resultado y luego ejecutar la otra para obtener el otro resultado, restarlos y encontrar los resultados; sin embargo, hay una manera de combinar las 3 funciones y obtener 1 resultado general
Como en: ejecute sql1 ejecute sql2 ejecute SQL3 (sql1-sql2)? ....
Los probé con xxxx como una función pero no tuve suerte.
((SELECT SUBSTRING_INDEX (SUBSTRING_INDEX (m, ''/'', 2), ''/'', - 1) FROM ms WHERE ms.id = t.m_id) - (SELECT COUNT (id) FROM t AS tr WHERE tr.m_id = t.m_id)) AS restantes
Deberías poder usar subconsultas para eso:
SELECT
(SELECT COUNT(*) FROM ... WHERE ...)
- (SELECT COUNT(*) FROM ... WHERE ...) AS Difference
Acabo de probarlo:
Difference
-----------
45
(1 row(s) affected)
Sé que este es un post antiguo, pero aquí hay otra solución que se adapta mejor a mis necesidades (probada en firebird)
SELECT c1-c2 from (select count(*) c1 from t1), (SELECT COUNT(*) c2 from t2);
SELECCIONAR (seleccione CUENTA (PRIMER NOMBRE) DE TRMDW.EMPLOYEE1) - (SELECCIONE CUENTA (DISTINCT FIRSTNAME) DE TRMDW.EMPLOYEE1) como diferencia de dual;
Simplemente cree una función en línea con su lógica de consulta y haga que devuelva el resultado. Pase los parámetros según sea necesario.
SELECT
t1.HowManyInTable1
,t2.HowManyInTable2
,t1.HowManyInTable1 = t2.HowManyInTable2 Table1_minus_Table2
from (select count(*) HowManyInTable1 from Table1) t1
cross join (select count(*) HowManyInTable2 from Table2) t2
SELECT (SELECT COUNT(*) FROM t1) - (SELECT COUNT(*) FROM t2)
SELECT (count(*) from t1) - (count(*) from t2);
esto funciono para mi
Además, si solo hay una tabla, también puedes hacerlo:
SELECT (count(column1)) - count(column2)) from table;
select @result = (select count(0) from table1) - (select count(0) from table2)