Как я могу получить результат SUM в качестве псевдонима в MYSQL?

    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-запросе поэтому я получаю результат как псевдоним. Спасибо.

Добавление образца входных/выходных данных к вашему вопросу было бы очень полезно для получения ответа здесь.

Tim Biegeleisen 14.12.2020 07:24

PS. Вам действительно нужно в СОЮЗ? Вы хотите получить 2 отдельные строки - одну с общей суммой, а другую с отфильтрованной? или нужно в одну строку - (дата, итог, отфильтровано)? Также я не вижу предложения GROUP BY - COUNT() без него, но с другим выбранным столбцом выглядит странно.

Akina 14.12.2020 07:28

Спасибо за ваш комментарий. Как вы говорите, прежний код слишком длинный, поэтому я изменил код. Если вы не возражаете, я надеюсь, что вы проверите мой измененный код. Спасибо

JB P 14.12.2020 07:36

Функция свертки может быть хорошим решением, но я не могу использовать ее в своем запросе JAVA, поэтому я получаю результат как псевдоним. ROLLUP — это не функция, а опция GROUP BY. Я не понимаю, почему вы не можете использовать его.

Akina 14.12.2020 07:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
223
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, вам нужно либо в

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. Но мой запрос отправляет данные только как псевдоним. Поэтому мне нужен результат как псевдоним.

JB P 14.12.2020 07:58

Благодарю вас за ваше усилие. Мне очень помогает!!

JB P 14.12.2020 08:16

Другие вопросы по теме