在mysql中如何计算总和的百分比?

在mysql中如何计算总和的百分比?,mysql,sql,percentage,with-statement,Mysql,Sql,Percentage,With Statement,我有一张简单的桌子 浏览器 综合浏览量 游猎 7.1875 即 1.935 firefix 1.3445 游猎 2.03 如果您使用的是较旧版本的MySQL,则: 查询: 输出: 浏览器 分享 游猎 0.575138039579793 即 0.15483715807683296 firefix 0.10758581745403162 游猎 0.1624389848893424 对于MySQL 5.x,请使用 select browser, pageview, page

我有一张简单的桌子

浏览器 综合浏览量 游猎 7.1875 即 1.935 firefix 1.3445 游猎 2.03
如果您使用的是较旧版本的MySQL,则:

查询:

输出:

浏览器 分享 游猎 0.575138039579793 即 0.15483715807683296 firefix 0.10758581745403162 游猎 0.1624389848893424 对于MySQL 5.x,请使用

select browser,
       pageview,
       pageview / total.total as share
from pageviews
CROSS JOIN ( select sum(pageview) as total
             from pageviews ) total

更改您的查询以使用正确的字段名称(您使用
pageviews
作为列名,但此列的名称是
pageview
?):


当您这样做时发生了什么?您的SQL语法有一个错误;查看与您的MySQL服务器版本对应的手册,了解使用near'total as(选择sum(页面视图))的正确语法由于您的MySQL总版本为5.x,并且不支持CTE.Upgrade。@Akina您可以坐下来让OP响应。您的评论不正确,没有帮助。您收到的错误似乎表明您的MySQL版本不支持WITH,您使用的MySQL版本是什么?WITH在版本8.Tho中引入se与问题中的查询相同。我认为这就是为什么会发生的原因。@Alon Kri如果有任何答案帮助您解决了问题,请通过单击绿色复选框接受。正如其他地方所讨论的,很明显OP使用的是较旧版本的MySQL。我已经为较旧版本的MySQL添加了答案。OP使用的是MySQL 8之前的版本。您正在使问题变得更加困难。OP在其字段名中出错,而您正在“静默”忽略该错误,并使用true!语句将其夸大,而在旧版本的MySQL中,您不能使用
执行该语句。@Luuk No。请参阅问题中的错误消息和我的注释。OP在hi中出错s字段名我不知道哪里有拼写错误-OP必须解决它。好的,但你的答案不是关于这个问题,而是关于一个不存在的问题。(顺便说一句,你的“答案”的否决票不是我的…)但你的答案不是关于这个问题你认为“你的版本是古老的”吗必须作为单独的答案编写?真的吗?我认为这是一个打字错误(更准确地说,就像“OP没有阅读文档”)。显然OP的MySql版本早于8.0+,所以我不理解这里的否决票。
select browser, 
       pageview,
       pageview / SUM(pageview) OVER () as share
from pageviews
select browser,
       pageview,
       pageview / total.total as share
from pageviews
CROSS JOIN ( select sum(pageview) as total
             from pageviews ) total
with total as
( select sum(pageview) as total
from pageviews )
select browser,
pageview / total.total as share
from pageviews,
total