MySql的值和总计(价值)在同一行中无组

问题描述:

我想获得当前行数量COUNT(*)和所有行上的总行数量作为每列的列(试图避免脚本的报告所需的它在sql之外)。 我不能使用SUM(数量),因为我不想按理由分组我的结果,当我使用一个参数:=我只得到最后一行的总数。MySql的值和总计(价值)在同一行中无组

我目前的查询看起来像

SET @sumTotal:=0; 
SELECT reason, qty, (@sumTotal := @sumTotal + qty) AS total_qty 
FROM 
(
SELECT reason, COUNT(*) AS qty 
FROM someTable 
--Imagine a huge amount of joins here 
GROUP BY someTableId 
)base 

表someTable看起来像

---------------------- 
projectid | reason 
---------------------- 
1   | reason11 
1   | reason12 
2   | reason21 
2   | reason22 
2   | reason23 
3   | reason31 
. 
. 
. 
3   | reason35 
---------------------- 

结果应该是这个样子

---------------------------- 
reason | qty | totalqty 
---------------------------- 
reason1 | 2 | 10 
reason2 | 3 | 10 
reason3 | 5 | 10 
---------------------------- 

难道我也许错了方向思考有一个简单的方法来解决这个问题?

+1

没有人可以帮助你,如果你不分享一些示例数据与你需要的结果 –

+0

@RaymondNijland-添加了预期的结果,thx的提示 – Mayrhofer

+0

你还应该发布源表或示例数据的标签 –

使用辅助SELECT查询来计算someTable行的数量。

SELECT reason, qty, total_qty 
FROM 
    (
    SELECT reason, COUNT(*) AS qty 
    FROM someTable 
    GROUP BY someTableId 
    ), 
    (
    SELECT count(*) AS total_qty 
    FROM someTable 
    ) 

这会在派生的子查询表之间产生笛卡尔乘积。第二个子查询将由总数量的单行组成。因此,总数量将被添加到第一个子查询中。

+0

其实我想避免使用两次的FROM项,我希望有一个更简单的方法来做到这一点。因为研究没有提出任何其他事情,我猜这是做它的唯一方法。对于使用临时表的更大查询可能会使其更清晰一些。 Thx寻求帮助。 – Mayrhofer