En SQL, la función sumaria COUNT(*) cuenta cantidad de registros existentes totales en el grupo.
Pero se pueden contar registros que cumplan ciertas condiciones
COUNT(IIF(Importe>1000,1,0)) estaría contando registros que en el grupo tengan un importe mayor que 1000
En mysql pondrás IF en lugar IIF y en otros SGBD tendrás que usar CASE WHEN u otras equivalentes
Cuando usamos agrupamiento (GROUP BY) hay que recordar que todos los campos no "envueltos" en una función sumaria (COUNT, SUM, AVG, etc.) que se listan en el SELECT, deben aparecer en el GROUP BY, aunque en esté pueden aparecer algunos campos que no se muestren.
COUNT(columna) cuenta cuantos registros en el grupo tienen columna con valor distinto de NULL
COUNT(DISTINCT columna) cuenta cuantos registros del grupo tienen valores distintos (o mejor dicho cuantos valores distintos de columna hay en el grupo)
Por ejemplo:
SELECT F.Fecha, COUNT(DISTINTC F.idFactura) as "CantFacturas",;
COUNT(DISTINCT D.idProducto) as "ProductosDistintos";
FROM Facturas F INNER JOIN Detalle D ON (F.idFactura = D.IdFactura);
GROUP BY F,Fecha;
ORDER BY 1
Tira por fechas, cuantas facturas se hicieron y cuantos productos diferentes se vendieron.
El libro recomendado para SQL (que te permite todo el dbase de acceso a datos) es:
Guia de SQL de James GROFF y Paul WEINBERG
Buen Provecho!!!