如何将额外的列添加到包含前一列百分比的选择语句
Posted
技术标签:
【中文标题】如何将额外的列添加到包含前一列百分比的选择语句【英文标题】:How to add extra columns to a select statement that contain percentages of a previous column 【发布时间】:2017-06-09 15:05:16 【问题描述】:我可以使用 select 语句生成这样的表格:
第 1 列总计 ------------- 项目 A 360 项目 B 440 项目 C 180这是我用来创建上表的 SQL 语句:
select column1, sum( order_total) as total
from report
group by column1;
如何修改我的 SQL 词干以在其中添加第 3 和第 4 列,即显示总列的百分比?百分比值基于 column1 中的值。所以最后我试图创建一个看起来像这样的表:
column1 总百分比_a 百分比_b -------------------------------------- 项目 A 360 108 252 B 项 440 220 220 C 项 180 70 110所以在上面的表格中,percentage_a 和 percent_b 列是总列的一定百分比。如何修改我的 SQL 代码,以便项目 A 行将有 30/70 拆分,而项目 B 列将是 50/50 拆分。
感谢您的帮助。我是新手。
【问题讨论】:
我发现您想要的结果中的数字与您想要做什么的解释之间没有任何关系。 抱歉,描述不佳。所以项目 A 是 30/70 的百分比拆分。 B 项是 50/50,依此类推。所以 percent_a 和 percent_b 列需要占总列的一定百分比。 您需要提供更多详细信息,是否根据您忘记提及的某个值来计算百分比? 那么您在其他表中有 30/70 和 50/50 或者这些是硬编码值? 是的,这些必须是硬编码的值。 【参考方案1】:应该这样做:
select
column1,
sum(order_total) as total,
sum(order_total) * 0.7 as percent_70_30,
sum(order_total) * 0.5 as percent_50_50
from
report
group by
column1;
【讨论】:
但每行的百分比细分不同。所以 ItemA、ItemB 和 ItemC 有不同的百分比细分。 你想用什么来表示分子和分母? 每一行或每一项都有不同的百分比,必须进行硬编码。项目 A 为 30%,B 为 50%,C 为 39%。 A 项是什么的 30%?【参考方案2】:再次抱歉问题的措辞不佳。这就是我一直在寻找的:
选择report.instituiton_name, sum(report.order_total) 作为 instituton_totals, t1.betteru_percentage, t2.cp_percentage 来自 bi_all_sales_report 报告 左连接 ( 选择机构名称,( 案子 当 instituiton_name = 'abc' THEN sum( order_total ) * 0.30 否则总和(order_total)* 0.50 END ) 作为 betteru_percentage 来自 bi_all_sales_report 按机构名称分组 ) t1 上 t1.instituiton_name = report.instituiton_name 左连接 ( 选择机构名称,( 案子 当 instituiton_name = 'abc' THEN sum( order_total ) * 0.70 否则总和(order_total)* 0.50 END ) 作为 cp_percentage 来自 bi_all_sales_report 按机构名称分组 ) t2 上 t2.instituiton_name = report.instituiton_name 按机构名称分组【讨论】:
以上是关于如何将额外的列添加到包含前一列百分比的选择语句的主要内容,如果未能解决你的问题,请参考以下文章