Al hacer esas subconsultas en el SELECT no sólo estás complicando la cosa, sino que además como no filtras bien en sus WHERE, no te está devolviendo datos fiables.
Hay modos más simples:
Código SQL:
Ver originalSELECT
IdUSuario CAJERO,
SUM(IF(IdEvento = 1, 1, 0)) VENDIO,
SUM(IF(IdEvento = 2, 1, 0)) PAGO,
SUM(IF(IdEvento = 3, 1, 0)) Regalo
FROM logcaja
GROUP BY IdUsuario;