SELECT
date_format(LEFT(CAST(REQDT AS UNSIGNED),8),'%Y-%m-%d') AS REQDT,
count(SVCE_DOMAIN) COUNTSVCE
FROM BC_HISTORY
where reqid ='MSYS'
group by date_format(LEFT(CAST(REQDT AS UNSIGNED),8),'%Y-%m-%d');
Код, который я написал выше, показывает такие результаты.
Я хочу знать, как суммировать числа в столбце «COUNTSVCE».
Столбец «COUNTSVCE» является псевдонимом count(SVCE_DOMAIN)
.
Rollup
функция может быть хорошим решением, но я не могу использовать ее в своем JAVA-запросе
поэтому я получаю результат как псевдоним.
Спасибо.
PS. Вам действительно нужно в СОЮЗ? Вы хотите получить 2 отдельные строки - одну с общей суммой, а другую с отфильтрованной? или нужно в одну строку - (дата, итог, отфильтровано)? Также я не вижу предложения GROUP BY - COUNT() без него, но с другим выбранным столбцом выглядит странно.
Спасибо за ваш комментарий. Как вы говорите, прежний код слишком длинный, поэтому я изменил код. Если вы не возражаете, я надеюсь, что вы проверите мой измененный код. Спасибо
Функция свертки может быть хорошим решением, но я не могу использовать ее в своем запросе JAVA, поэтому я получаю результат как псевдоним. ROLLUP — это не функция, а опция GROUP BY. Я не понимаю, почему вы не можете использовать его.
Кажется, вам нужно либо в
SELECT total.*
FROM ( SELECT DATE_FORMAT(LEFT(CAST(reqdt AS UNSIGNED),8),'%Y-%m-%d') AS reqdt,
COUNT(svce_domain) countsvce
FROM bc_history
GROUP BY reqdt
UNION ALL
SELECT DATE_FORMAT(LEFT(CAST(reqdt AS UNSIGNED),8),'%Y-%m-%d') AS reqdt,
COUNT(svce_domain) countsvce
FROM bc_history
WHERE reqid ='MSYS'
GROUP BY reqdt
) AS total
или в
SELECT DATE_FORMAT(LEFT(CAST(reqdt AS UNSIGNED),8),'%Y-%m-%d') AS reqdt,
COUNT(svce_domain) total_count,
SUM(reqid ='MSYS') msys_count
FROM bc_history
GROUP BY reqdt
ОБНОВЛЕНИЕ в соответствии с измененным вопросом
Почему вы не можете использовать
SELECT DATE_FORMAT(LEFT(CAST(reqdt AS UNSIGNED),8),'%Y-%m-%d') AS reqdt,
COUNT(svce_domain) countsvce
FROM bc_history
WHERE reqid ='MSYS'
GROUP BY reqdt WITH ROLLUP;
?
Общая сумма для столбца будет последней строкой со значением NULL в столбце reqdt
(которое может быть заменено каким-либо литералом, например, «Итого»).
Я хочу использовать этот запрос в Mybatis в Springboot. Но мой запрос отправляет данные только как псевдоним. Поэтому мне нужен результат как псевдоним.
Я ничего не понимаю. Но вы можете преобразовать запрос в подзапрос.
SELECT *
FROM (
SELECT DATE_FORMAT(LEFT(CAST(reqdt AS UNSIGNED),8),'%Y-%m-%d') AS reqdt,
COUNT(svce_domain) countsvce
FROM bc_history
WHERE reqid ='MSYS'
GROUP BY reqdt WITH ROLLUP
) AS subquery
ORDER BY reqdt IS NULL; -- place total row last
Теперь назначьте псевдоним обычным способом, как будто это таблица, а не подзапрос.
Я хочу использовать этот запрос в Mybatis в Springboot. Но мой запрос отправляет данные только как псевдоним. Поэтому мне нужен результат как псевдоним.
Благодарю вас за ваше усилие. Мне очень помогает!!
Добавление образца входных/выходных данных к вашему вопросу было бы очень полезно для получения ответа здесь.