【发布时间】:2021-03-08 03:28:08
【问题描述】:
在这个previous question 中,我试图按照目前的方式对我的产品进行分组。
现在我正在尝试将我查询的所有产品与所有已售产品的总和以及每种情况下的平均价格进行分组,这就是它的外观:
这是我的查询:
select
missions_answer.response_id as Response,
crm_player."document" as Document,
MAX(missions_answerselectmultiple.body::json ->> 'name') FILTER (WHERE missions_question.label = 'Producto') as Product,
MAX(missions_answerinteger.body) FILTER (WHERE missions_question.label = 'Cantidad unidades vendidas') as Amount,
MAX(missions_answerinteger.body) FILTER (WHERE missions_question.label = 'Valor Unidad') as Price
from missions_answer
left join missions_question on missions_answer.question_id = missions_question.id
left join missions_answertext on missions_answer.id = missions_answertext.answer_ptr_id
left join missions_answerselectmultiple on missions_answer.id = missions_answerselectmultiple.answer_ptr_id
left join missions_answerinteger on missions_answer.id = missions_answerinteger.answer_ptr_id
left join missions_response on missions_answer.response_id = missions_response.id
left join crm_player on missions_response.player_id = crm_player.id
LEFT JOIN crm_user ON crm_player.user_id = crm_user.id
group by Response, Document
我试图得到这样的东西:
+ ----------------------- + ---------- + ---------- +
- product + total_sold + mean_price +
+ ----------------------- + ---------- + ---------- +
+ Perfiles- Esquinera.... + 669.000 + 2.500 +
+ Traslucent... + 900.000 + 30.000 +
对于表格中的所有产品,以此类推,事实是我无法将所有价格与分组期间的金额相乘,也无法计算表格中每个产品案例的平均价格。
我正在尝试这个:
select
MAX(missions_answerselectmultiple.body::json ->> 'name') FILTER (WHERE missions_question.label = 'Producto') as Product,
MAX(missions_answerinteger.body) FILTER (WHERE missions_question.label = 'Cantidad unidades vendidas') as Amount,
MAX(missions_answerinteger.body) FILTER (WHERE missions_question.label = 'Valor Unidad') as Price,
sum( (MAX(missions_answerinteger.body) FILTER (WHERE missions_question.label = 'Valor Unidad')) * (MAX(missions_answerinteger.body) FILTER (WHERE missions_question.label )= 'Cantidad unidades vendidas') ) as Total
from missions_answer
left join missions_question on missions_answer.question_id = missions_question.id
left join missions_answertext on missions_answer.id = missions_answertext.answer_ptr_id
left join missions_answerselectmultiple on missions_answer.id = missions_answerselectmultiple.answer_ptr_id
left join missions_answerinteger on missions_answer.id = missions_answerinteger.answer_ptr_id
left join missions_response on missions_answer.response_id = missions_response.id
left join crm_player on missions_response.player_id = crm_player.id
LEFT JOIN crm_user ON crm_player.user_id = crm_user.id
group by Product
但我明白了
SQL Error [42803]: ERROR: aggregate function calls cannot be nested
希望有人可以帮助我,提前感谢任何提示或帮助。
【问题讨论】:
-
有什么问题? sum(axb) 应该可以工作。如果需要,删除 NULL 值。
标签: sql postgresql pivot left-join aggregate-functions