问题描述
我正在尝试创建一个表,该表显示取决于指示器的每个状态的计数百分比。
这是我用来创建新表的数据集的示例。
+-------------+-------+-------+
| Indicator | State | Count |
+-------------+-------+-------+
| Registered | CA | 25 |
| Registered | FL | 12 |
| Total | CA | 50 |
| Total | FL | 36 |
+-------------+-------+-------+
我正在尝试创建一个新表,该表将为每个对应的行设置一个百分比,如下所示:
+-------------+-------+-------+------------+
| Indicator | State | Count | Percentage |
+-------------+-------+-------+------------+
| Registered | CA | 25 | 50 |
| Registered | FL | 12 | 33.3 |
| Total | CA | 50 | . |
| Total | FL | 36 | . |
+-------------+-------+-------+------------+
到目前为止,我已经尝试过执行以下查询:
select indicator,state,count,case when (select count from table where indicator='Registered') * 100 / (select count from table where indicator='Total')
when indicator = 'Total' then . end as Percentage
from table;
这不起作用,因为我收到一个错误:“子查询评估了多个行。”我猜是因为我没有考虑在when语句的情况下的状态,但是我不确定该如何处理。
什么是最好的方法?
解决方法
您可以使用窗口功能:
"endDate"
,
只需将桌子与自己连接起来即可。
OrderID