- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想计算每个问题的项目数量、金额和总百分比,仅限于给定的资助者和财政年度。出于某种原因,当我运行下面的查询时,我没有看到 null来自左联接的值。
项目和问题的关系是一个问题可以有很多项目。问题表由目标表链接。
已更新
select
q.sp_question_id,
count(p.project_id) as projectCount,
sum(p.funding) as amount,
round(sum(p.funding)/sum(sum(p.funding)) over() *100) as percentTotal
from questions q
left join projects p on p.fiscal_year = q.fiscal_year
join objectives o on o.sp_objective_id = p.sp_objective_id
and o.sp_question_id = q.sp_question_id
and o.fiscal_year = p.fiscal_year
and o.fiscal_year = 2014
join funders f on p.funder_id = f.funder_id
where f.funder_short_name ='foo'
and q.fiscal_year = 2014
group by q.sp_question_id
order by q.sp_question_id;
questionId projectCount amount percentTotal
q1 14 54510 4
q2 29 1083598.72 76
q3 1 19900 1
q4 5 145631 10
q5 1 124999 9
q6 1 0 0
questionId projectCount amount percentTotal
q1 14 54510 4
q2 29 1083598.72 76
q3 1 19900 1
q4 5 145631 10
q5 1 124999 9
q6 1 0 0
q7 <null> <null> <null>
select
q.sp_question_id,
count(p.project_id) as projectCount,
sum(p.funding) as amount,
round(sum(p.funding)/sum(sum(p.funding)) over() *100) as percentTotal
from questions q
left join projects p on p.fiscal_year = q.fiscal_year
left join objectives o on o.sp_objective_id = p.sp_objective_id
and o.sp_question_id = q.sp_question_id
and o.fiscal_year = p.fiscal_year
and o.fiscal_year = 2014
left join funders f on p.funder_id = f.funder_id
where f.funder_short_name ='foo'
and q.fiscal_year = 2014
group by q.sp_question_id
order by q.sp_question_id;
questionId projectCount amount percentTotal
na 51 1428638.72 11
q1 51 1428638.72 11
q2 51 1428638.72 11
q3 51 1428638.72 11
q4 51 1428638.72 11
q5 51 1428638.72 11
q6 51 1428638.72 11
q7 51 1428638.72 11
qother 51 1428638.72 11
select
q.sp_question_id,
count(p.project_id) as projectCount,
sum(p.funding) as amount,
round(sum(p.funding)/sum(sum(p.funding)) over() *100) as percentTotal
from questions q
left join projects p on p.fiscal_year = q.fiscal_year
left join objectives o on o.sp_objective_id = p.sp_objective_id
and o.sp_question_id = q.sp_question_id
and o.fiscal_year = p.fiscal_year and o.fiscal_year = 2014
left join funders f on p.funder_id = f.funder_id and f.funder_short_name ='foo'
where q.fiscal_year = 2014
group by q.sp_question_id
order by q.sp_question_id;
questionId projectCount amount percentTotal
na 1225 299628985.01 11
q1 1225 299628985.01 11
q2 1225 299628985.01 11
q3 1225 299628985.01 11
q4 1225 299628985.01 11
q5 1225 299628985.01 11
q6 1225 299628985.01 11
q7 1225 299628985.01 11
qother 1225 299628985.01 11
最佳答案
您遇到的问题与 sql 中最不为人知的问题之一有关:关系的传递性。
您在项目和问题之间进行可选(外部)连接,但您要求在项目和目标(和资助者)之间建立强制(内部连接)关系:
计算中间结果集的传递系统使内连接占优势,这基本上意味着中间的外连接被忽略了。准确的说,它并没有被忽略,而是变成了一个inner join。
您得到的是内部联接一直向下的结果,而您实际上期望左联接按原样运行并为与任何项目无关的问题返回空行...但是引擎确实如此不像上面描述的那样工作。
在我的头脑中,我只是认为你可以一直使用左连接。但是您可能会遇到比预期更多的空行。这实际上取决于您对数据的处理方式。
此外,您的查询中似乎有一个应该修改的广泛连接。请试试这个:
select
q.sp_question_id,
count(p.project_id) as projectCount,
sum(p.funding) as amount,
round(sum(p.funding)/sum(sum(p.funding)) over() *100) as percentTotal
from questions q
left join objectives o on
o.sp_question_id = q.sp_question_id
and o.fiscal_year = 2014
left join projects p on o.fiscal_year = p.fiscal_year and o.sp_objective_id = p.sp_objective_id
left join funders f on p.funder_id = f.funder_id and f.funder_short_name ='foo'
where q.fiscal_year = 2014
group by q.sp_question_id
order by q.sp_question_id;
关于sql - oracle sql left join 和 count, sum, group by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27910455/
我有这个示例代码: #include #include int main() { Eigen::MatrixXf M = Eigen::MatrixXf::Random(1000, 1000)
我有一个像这样的数据框: +-----+--------+ |count| country| +-----+--------+ | 12| Ireland| | 5|Thailand| +-
我想要 SUM(tot_bill_1+tot_bill_2) AS 总计,但这不起作用 SELECT *, IF(SUM(bill_1) IS NULL, '99', SUM(bill_1)) AS
如果我们有两个矩阵 X 和 Y,都是二维的,现在在数学上我们可以说:sum(X-Y)=sum(X)-总和(Y). Matlab 哪个效率更高?哪个更快? 最佳答案 在我的机器上,sum(x-y) 对于
我正在运行 Hive 1.1.0 并看到对于两个 bigint 列,active_users 和 inactive_users,SUM(active_users + inactive_users) <
是否可以在一个选择查询中求和? 类似这样的事情: SELECT id, SUM(current_price - bought_price)*amount AS profit FROM purchase
这是一个相当奇怪的结果。我希望这些具有相同的产量。 下面还有从数据库中提取的 excel 链接。 https://twentius.opendrive.com/files?89038281_muoyg
我必须对 2 个字段求和,然后再求和。从性能的角度来看,先添加字段还是在对列求和之后添加字段有什么区别? 方法 1 = SELECT SUM(columnA + columnB) 方法 2 = SEL
这是一个经典问题,但我很好奇是否有可能在这些条件下做得更好。 问题:假设我们有一个长度为4*N的排序数组,即每个元素重复4次。请注意,N 可以是任何自然数。此外,数组中的每个元素都受制于 0 A. 执
我正在编写一个 Pig 程序,该程序加载一个用制表符分隔整个文件的文件 例如:名称 TAB 年份 TAB 计数 TAB... file = LOAD 'file.csv' USING PigStora
我有一个包含以下字段的表: EmpID, Code, Amount, TransDate, CM, CMDate 我想要进入数据网格的是 SUM所有的Amount具有相同的 Code和 SUM CM具
我有两个单独的查询用于提取报告信息。一年效果很好。但是,如果一个月超过 1 年,则不会显示正确的响应。 这是我的两个查询: select SUM(rpt_complete.total) total,
我想查询一个团队的积分。通过在列上执行 SUM + 来自具有相同团队 ID 的另一个表的 SUM 来添加这些点。我试着这样写: SELECT k.id, s.fylke, s.
这个问题在这里已经有了答案: How to deal with floating point number precision in JavaScript? (47 个回答) Unexpected
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 5 年前。 Improve
我已经找了一段时间,但找不到这个问题的答案(也许我没有搜索正确的术语或其他东西)。基本上,我有一个数据库,每个日期有任意数量的条目。我需要取包含条目的最后 X 天的总和(忽略没有条目的天数)。我知道如
我正在尝试获取 B 行中包含 A 行中某个值的所有值中的一些值。我猜这个问题很简单。 这是我的查询: =QUERY('Sheet1'!$A$16:D, "Select sum(D) Where C c
我正在尝试运行以下查询,但出现以下错误: You have an error in your SQL syntax; check the manual that corresponds to your
我有一个 tableA,其中包含以下结构 我将此结构修改为如下所示的tableB,以减少行数,并且类别是固定长度的 假设我在 tableA 中修改为新结构后有 210 万条数据,tableB 仅包含
我的表在 Postgres 中的数据: id user_id sell_amount sell_currency_id buy_amount buy_currency_id type
我是一名优秀的程序员,十分优秀!