如何解决我如何计算mysql中总和的百分比?
我有一张简单的桌子
浏览器 | 浏览量 |
---|---|
野生动物园 | 7.1875 |
即 | 1.935 |
firefix | 1.3445 |
野生动物园 | 2.03 |
我正在尝试计算每个浏览器的页面浏览量占总浏览量(以百万计)的百分比。
with total as
( select sum(pageviews) as total
from pageviews )
select browser,pageviews / total.total as share
from pageviews,total
但我收到此错误:
您的 sql 语法有错误;检查手册 对应于您的 MysqL 服务器版本以使用正确的语法 接近 'total as ( select sum(pageviews) as total
关于如何计算百分比的任何建议? 谢谢!
解决方法
select browser,pageview,pageview / SUM(pageview) OVER () as share
from pageviews
对于 MySQL 5.x 使用
select browser,pageview / total.total as share
from pageviews
CROSS JOIN ( select sum(pageview) as total
from pageviews ) total
https://dbfiddle.uk/?rdbms=mysql_8.0&rdbms2=mysql_5.7&fiddle=6c188ab43ec7a81495630bcc266f46bd
,如果您使用的是旧版 MySQL,则:
查询:
select browser,pageviews / total.total as share
from pageviews,( select sum(pageviews) as total
from pageviews )total
输出:
浏览器 | 分享 |
---|---|
safari | 0.575138039579793 |
即 | 0.15483715807683296 |
firefix | 0.10758581745403162 |
safari | 0.1624389848893424 |
dbfiddle here
如果您使用的是 MySQL 8,那么您可以使用窗口函数:
select browser,pageviews / sum(pageviews)over(partition by (select 1)) as share from pageviews
DB-Fiddle 链接:
create table pageviews (browser varchar(20),pageviews float);
insert into pageviews values('safari',7.1875);
insert into pageviews values('ie',1.935);
insert into pageviews values('firefix',1.3445);
insert into pageviews values('safari',2.03);
with total as
( select sum(pageviews) as total
from pageviews )
select browser,total
浏览器 | 分享 |
---|---|
safari | 0.575138039579793 |
即 | 0.15483715807683296 |
firefix | 0.10758581745403162 |
safari | 0.1624389848893424 |
select browser,pageviews / sum(pageviews)over(partition by (select 1)) as share from pageviews
浏览器 | 分享 |
---|---|
safari | 0.575138039579793 |
即 | 0.15483715807683296 |
firefix | 0.10758581745403162 |
safari | 0.1624389848893424 |
dbfiddle here
强调文字
,更改您的查询以使用正确的字段名称(您使用 pageviews
作为列名称,但此列的名称是 pageview
?):
with total as
( select sum(pageview) as total
from pageviews )
select browser,pageview / total.total as share
from pageviews,total
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。