sql - 分组和划分
问题描述
我在会计科目的 sql 上有下表(A 是成本科目,B 是人数),cc 作为成本中心。所以我想要做的是将账户 A 的金额除以每个 cc 的账户 B
帐户 | 抄送 | 数量 |
---|---|---|
一个 | X | 1 |
一个 | 是的 | 2 |
乙 | z | 4 |
乙 | 是的 | 1 |
一个 | z | 1 |
乙 | X | 2 |
所以结果是:
帐户 | 抄送 | 数量 |
---|---|---|
一个 | X | 1 /2 |
一个 | 是的 | 2 |
乙 | z | 0 |
乙 | 是的 | 0 |
一个 | z | 1 /4 |
乙 | X | 0 |
我正在考虑一个小组,但我是 sql 的初学者,不知道如何使用它提前感谢您的帮助!
解决方案
对于您指定的结果,您可以使用窗口函数:
select t.*,
(case when account = 'A'
then amount * 1.0 / sum(case when account = 'B' then amount end) over (partition by cc)
else 0
end) as ratio
from t;
推荐阅读
- c++ - c++ char数组返回一些奇怪的值
- junit5 - 我可以将参数传递给junit中的beforeAll方法吗
- angular - 仅选择材质嵌套树中的父节点
- javascript - 仅在需要并在某处使用时才包含像 jQuery 这样的库
- javascript - 逻辑和 (&&) 类型的运算符仅适用于 Javascript 中的空类型
- javascript - autocomplete="on" 在 Firefox 浏览器中不起作用
- rsa - 即使代码没有改变,rsa 公式也会给出不同的结果
- swift - 如何更改 UIImagePickerController 搜索栏的背景颜色
- python - 检查数组Python列表中的元素
- laravel - 如何在 laravel 中使用会话 id 检索会话变量