如何在mysql中获得sum结果作为别名?

qkf9rpyu  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(464)
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查询中使用它,所以我将结果作为别名。谢谢您。

3htmauhk

3htmauhk1#

看来你们两个都需要

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;

?
列的总和将是最后一行,其中的值为空 reqdt 列(可以用一些文字替换,例如“total”)。
我想在springboot的mybatis中使用这个查询。但我的查询仅以别名发送数据。所以我需要结果作为别名。
我什么都不懂。但您可以将查询转换为子查询。

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

现在按常规方式分配别名,就像这是一个表,而不是一个子查询。

相关问题