在Postgresql中使用distinct和聚合函数?

在Postgresql中使用distinct和聚合函数?,第1张

概述这是一个非常基本的问题,无论出于何种原因,我找不到合理的解决方案.我会尽力解释. 假设你有一个活动门票(部分,行,座位#).每张票都属于与会者.多张票可以属于同一个与会者.每位与会者都有一个价值(例如:参加者#1价值10,000美元).那就是说,这就是我想做的事情: 1. Group the tickets by their section2. Get number of tickets (co 这是一个非常基本的问题,无论出于何种原因,我找不到合理的解决方案.我会尽力解释.

假设你有一个活动门票(部分,行,座位#).每张票都属于与会者.多张票可以属于同一个与会者.每位与会者都有一个价值(例如:参加者#1价值10,000美元).那就是说,这就是我想做的事情:

1. Group the tickets by their section2. Get number of tickets (count)3. Get total worth of the attendees in that section

这就是我遇到问题的地方:如果参加者#1价值10,000美元且使用4张门票,那么sum(attendees.worth)将返还40,000美元.哪个不准确.价值应该是10,000美元.然而,当我将结果与参与者区分开来时,计数并不准确.在一个理想的世界里,做一些像这样的事情会很好

select     tickets.section,count(tickets.*) as count,sum(disTINCT ON (attendees.ID) attendees.worth) as total_worth from     tickets     INNER JOIN     attendees ON attendees.ID = tickets.attendee_ID GROUP BY tickets.section

显然这个查询不起作用.如何在单个查询中完成同样的事情?或者甚至可能吗?我更愿意远离子查询,因为这是一个更大的解决方案的一部分,我需要在多个表中执行此 *** 作.

此外,值得按照票价平均分配.例如:$10,000 / 4.每张门票的参加者价值5,000美元.因此,如果门票分别在不同的部分,他们会按比例分配门票.

谢谢你的帮助.

您需要在与会者之前汇总门票:
select ta.section,sum(ta.numtickets) as count,sum(a.worth) as total_worthfrom (select attendee_ID,section,count(*) as numtickets      from tickets      group by attendee_ID,section     ) ta INNER JOIN     attendees a     ON a.ID = ta.attendee_IDGROUP BY ta.section

您仍然遇到单个与会者在多个部分中拥有席位的问题.但是,你没有指定如何解决这个问题(分配价值?随机选择一个部分?将它归于所有部分?规范地选择一个部分?)

总结

以上是内存溢出为你收集整理的在Postgresql中使用distinct和聚合函数?全部内容,希望文章能够帮你解决在Postgresql中使用distinct和聚合函数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1181818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存