Вы должны были использовать SUM
вместо COUNT
, например, когда условие внутри - true, 1 возвращается, а когда - false 0, поэтому суммирование этих значений будет таким, как если бы вы подсчитывали их на основе условия.Вы также должны убедиться, что в датах нет времени.
SELECT
DATE(`date`) `date`,
SUM(deviceType="mobile") As numOfMobile,
SUM(deviceType="desktop") AS numOfDesktop,
SUM(deviceType="tablet") AS numOfTablet
FROM
tableName
GROUP BY DATE(`date`)
ORDER BY DATE(`date`);
Для использования счетчика сделайте что-то вроде:
SELECT
DATE(`date`) `date`,
COUNT(IF(deviceType="mobile", 1, NULL)) As numOfMobile,
COUNT(IF(deviceType="desktop", 1, NULL)) AS numOfDesktop,
COUNT(IF(deviceType="tablet", 1, NULL)) AS numOfTablet
FROM
tableName
GROUP BY DATE(`date`)
ORDER BY DATE(`date`);
В этом случае, когда условие ложно, значение NULL равноreturn и функция count не примет это во внимание.