Процент MySQL Queries для Google Chart с параметрами фильтра - PullRequest
1 голос
/ 01 июля 2019

У меня есть запрос, который возвращает процент, который мне нужен, на общем уровне:

SELECT
    CAST(((count(LOWER(`q3`)='no')/(select count(`q3`) from `data`))*100) as decimal (10,2))
FROM `data`
WHERE LOWER(`q3`)='no'

Это вернет процент, который сказал no в столбце q3, и является точным (проверка по сравнению с выполнением цифр в Excel) (q3 содержит Да или Нет для каждой записи).

Однако я хочу отобразить эти данные в гугл-графике по месяцам и местоположениям, поэтому я немного увеличил запрос:

SELECT 
    DATE_FORMAT(date_submitted,'%b-%y') AS 'Month',
    CAST(((count(LOWER(`q3`)='no')/(select count(`q3`) from `data`))*100) as decimal (10,2)) AS 'MSO'
FROM `data` 
WHERE LOWER(`q3`)='no' AND store_list IN (5902) 
GROUP BY YEAR(date_submitted), MONTH(date_submitted)
ORDER BY YEAR(date_submitted) ASC, MONTH(date_submitted) ASC

И эти цифры и не правильные, вычеркивая местоположение (эта часть будет заменена на конечном веб-сайте, отображающем диаграмму, так что это IN с одним числом, которое я оцениваю, выглядит неправильно, но может быть многократным), но все равно дает я неверно вычисляю итоговые данные за месяц, вычеркивая данные за месяц, я получаю неверные итоговые данные о местоположении (и, естественно, наличие их обоих в приведенном выше примере не работает вообще).

Поглаживал бороду на этом, но не уверен, где я иду не так, в основном нужно, чтобы вывод был в формате диаграммы Google:

макет диаграммы Google

Но я получаю цифры 19 мая 1.69, 19 июня 0.56 и 19 июля 6.18 = (

1 Ответ

1 голос
/ 03 июля 2019

Спасибо @WhiteHat выше за то, что рассказали мне об этом, мои счета не работали (это может быть MariaDB, я пробовал их в формате MySQL, который я погуглил, но это не сработало), так что в качестве альтернативыКазалось, дело в подсчете случаев:

SELECT 
    DATE_FORMAT(date_submitted,'%b-%y') AS 'Month',
    CAST(((SUM(CASE WHEN LOWER(`q3`) = 'no' THEN 1 ELSE 0 END)/COUNT(*))*100) as decimal (10,2)) AS 'MSO'
FROM `data` 
WHERE store_list IN (5902) 
GROUP BY YEAR(date_submitted), MONTH(date_submitted)
ORDER BY YEAR(date_submitted) ASC, MONTH(date_submitted) ASC

Если кто-то сталкивался с этим в Google, это то, как я решил это, спасибо, что обсудили это со мной!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...