创建显示SQL中变量百分比的表
我正在使用一个用户数据表,其中包括用户的状态和唯一ID: 空白表 状态 用户id 科罗拉多州 1. 佛罗里达州 2. 科罗拉多州 3. 犹他州 4. 纽约 5. 缅因州 6.创建显示SQL中变量百分比的表,sql,postgresql,Sql,Postgresql,我正在使用一个用户数据表,其中包括用户的状态和唯一ID: 空白表 状态 用户id 科罗拉多州 1. 佛罗里达州 2. 科罗拉多州 3. 犹他州 4. 纽约 5. 缅因州 6. 您可以执行以下操作来计算百分比: SELECT state, round(count(*)::decimal / (select count(*) from t) * 100, 2) AS per FROM t GROUP BY state; 要转换de table,可以使用crosstab()函数,但我认为这个静态透
您可以执行以下操作来计算百分比:
SELECT state, round(count(*)::decimal / (select count(*) from t) * 100, 2) AS per
FROM t
GROUP BY state;
要转换de table,可以使用crosstab()函数,但我认为这个静态透视在这种情况下不会有用
此查询是一种动态轴心,但我不知道是否对您有用:
SELECT array_agg(state || ': ' || per || ' %') AS data
FROM (
SELECT state, round(count(*)::decimal / (select count(*) from t) * 100, 2) AS per
FROM t
GROUP BY state) AS aux;
输出(使用我的示例数据):
资料
{“纽约:25.00”,“科罗拉多:25.00”,“佛罗里达:50.00”}
我建议有条件地汇总:
select avg( (state = 'Colorado')::int ) as ratio_co,
avg( (state = 'Florida')::int ) as ratio_fl,
avg( (state not in ('Colorado', 'Florida'))::int ) as ratio_other
from mytable;
这将产生一个介于0和1之间的数字。如果您愿意,您可以乘以100并格式化结果。这太完美了,谢谢!不熟悉条件聚合,但这实际上很有意义。做了一点格式化,并且能够得到我想要的,再次感谢。你能在你的查询中添加一个不同的吗?像
selectdistinct*from(你的查询)q代码>