mySQL MAX与sum 连用_MySQL结合了COUNT,MAX和SUM

在MySQL查询中,如何在获取某列最大值的同时,计算这些最大值的总和并用于计算占比。示例展示了通过子查询获取`COUNT(*)`的最大值(MAX_COUNT),然后尝试计算其总和(SUM_MAX_COUNT)以进一步计算百分比。问题在于在CROSS JOIN中引用子查询时遇到了错误。最终目标是得到每个`COL1`和`COL2`组合的最大`COUNT_LINES`及其占所有组合最大值总和的比例。
摘要由CSDN通过智能技术生成

在MySQL中,我想有一个额外的列来显示特定列的值之和.但是,我想求和的数字来自子查询,并且没有存储在单独的表中,如下所示:

(SELECT a.ID, MAX(a.COUNT_ID) AS MAX_COUNT FROM

(SELECT ID, COUNT(*) AS COUNT_ID

FROM my_table

GROUP BY COL1, COL2) a

GROUP BY COL1, COL2) b

这将输出类似:

ID MAX_COUNT

ABC 1

DEF 2

GHI 3

现在,我想要一个额外的列来显示MAX_COUNT的总和,如下所示(在所有行中都重复):

ID MAX_COUNT SUM_MAX_COUNT

ABC 1 6

DEF 2 6

GHI 3 6

实际目标实际上是显示MAX_COUNT占MAX_COUNT总数的百分比,即1 / 6、2 / 6和3/6.

我该怎么做呢?我已经尝试过进行CROSS JOIN,但是它不起作用:

SELECT * FROM

((SELECT a.ID, MAX(a.COUNT_ID) AS MAX_COUNT FROM

(SELECT ID, COUNT(*) AS COUNT_ID

FROM my_table

GROUP BY COL1, COL2) a

GROUP BY COL1, COL2) b

CROSS JOIN (SELECT SUM(b.MAX_COUNT)) AS c

错误:未知表’b’

表格示例:

CREATE TABLE TABLE1 (

COL1 varchar(255),

COL2 varchar(255),

DAY int,

HOUR int);

INSERT INTO TABLE1 VALUES

('X','Y',1,12),

('X','Y',1,13),

('X','Y',1,13),

('A','B',2,19),

('X','B',3,13),

('X','B',3,13);

现在,对于COL1和COL2的每种组合,我想要每个小时中此表中的行数:

SELECT COL1, COL2, HOUR, COUNT(*) AS COUNT_LINES

FROM TABLE1

GROUP BY DAY, HOUR, COL1, COL2;

输出以下内容:

COL1 COL2 HOUR COUNT_LINES

X Y 12 1

X Y 13 2

A B 19 1

X B 13 2

现在我想要,对于COL1和COL2的每个组合,最大为COUNT_LINES,所以我在子查询中使用上面的查询:

SELECT a.COL1, a.COL2, MAX(a.COUNT_LINES)

FROM

(SELECT COL1, COL2, HOUR, COUNT(*) AS COUNT_LINES

FROM TABLE1

GROUP BY DAY, HOUR, COL1, COL2) a

GROUP BY COL1, COL2;

输出以下内容:

COL1 COL2 MAX(COUNT_LINES)

A B 1

X B 2

X Y 2

现在,在最后一步中,我希望将MAX(COUNT_LINES)列的SUM放在单独的列中,如下所示:

COL1 COL2 MAX(COUNT_LINES) SUM(MAX(COUNT_LINES))

A B 1 5

X B 2 5

X Y 2 5

但这是我不知道该怎么做的部分.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值