Jon*_*Jon 7 postgresql aggregate datatypes count
所以我有一个真正的休息日什么的,但对于我的生活,我无法弄清楚这一点。我想分tier1由total获得总数的百分比。我是这样想的:
(tier1 / total) as per
Run Code Online (Sandbox Code Playgroud)
但没有运气。我将这些 CAST 作为 int 并且仍然没有。我会得到一个错误并且查询不会执行,或者我会得到一个值 0。
这是我正在尝试使用的内容:
SELECT count(student_id) as total
,(SELECT count(fall_september_tier) FROM national_assessments.aimsweb WHERE general_outcome_measure = 'PSF' AND fall_september_tier = 1) as tier1
,(SELECT count(fall_september_tier) FROM national_assessments.aimsweb WHERE general_outcome_measure = 'PSF' AND fall_september_tier = 2) as tier2
,(SELECT count(fall_september_tier) FROM national_assessments.aimsweb WHERE general_outcome_measure = 'PSF' AND fall_september_tier = 3) as tier3
FROM national_assessments.aimsweb
WHERE general_outcome_measure = 'PSF' AND fall_september_tier IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
我也有这个想法,但没有运气:
SELECT tier1,total, tier1/total as test
FROM (
SELECT count(student_id) as total
,(SELECT count(fall_september_tier) FROM national_assessments.aimsweb WHERE general_outcome_measure = 'PSF' AND fall_september_tier = 1) as tier1
,(SELECT count(fall_september_tier) FROM national_assessments.aimsweb WHERE general_outcome_measure = 'PSF' AND fall_september_tier = 2) as tier2
,(SELECT count(fall_september_tier) FROM national_assessments.aimsweb WHERE general_outcome_measure = 'PSF' AND fall_september_tier = 3) as tier3
FROM national_assessments.aimsweb
WHERE general_outcome_measure = 'PSF' AND fall_september_tier IS NOT NULL
) as test
Run Code Online (Sandbox Code Playgroud)
Erw*_*ter 11
整数除法截断小数位。您的表达式返回一个介于 0 和 1 之间的比率,该比率始终被截断为 0。
要获得“百分比”,首先乘以 100。
要获得小数位数,请转换为numeric(在除法之前) - 或乘以100.0。数字文字中小数位的存在会numeric自动强制结果。
通常,您会四舍五入为两个小数位或其他数字。round()为此使用(仅适用于numeric)。
向您获得的查询添加一些其他基本优化:
SELECT total
,tier1, round((tier1 * 100.0) / total, 2) AS tier1_pct
,tier2, round((tier2 * 100.0) / total, 2) AS tier2_pct
,tier3, round((tier3 * 100.0) / total, 2) AS tier3_pct
FROM (
SELECT count(*) AS total
,count(fall_september_tier = 1 OR NULL) AS tier1
,count(fall_september_tier = 2 OR NULL) AS tier2
,count(fall_september_tier = 3 OR NULL) AS tier3
FROM national_assessments.aimsweb
WHERE general_outcome_measure = 'PSF'
AND fall_september_tier IS NOT NULL
) sub;
Run Code Online (Sandbox Code Playgroud)
计数技术说明:
| 归档时间: |
|
| 查看次数: |
18144 次 |
| 最近记录: |