sql - 在 Postgres 中,如何在同一查询中进行 COUNT 和 WHERE,然后对结果进行数学运算?

标签 sql postgresql postgresql-9.3

我有一个很大的SALES_ORDERS数据库,我需要确定ORDER中每个SELLING_AGENT所占的百分比。

学习 postgresql,这只是一个示例,大约有 50 万行数据。每个 ORDER# 可以由数十个 SALE_ITEM 组成(但仅由 'SALE_ITEM_1''SALE_ITEM_2' 组成>).

我想我可以尝试做这样的 SUM SELECT 操作:

    SELECT (SUM(sale_item_1)+sum(sale_item_2)) as total_person_sale
    FROM SALES_ORDER
    WHERE orderNumber LIKE orderNumber
    GROUP by SELLING_AGENT

但显然我没有掌握 WHERE 语句用于计算类似的

希望填写最后一栏,如下所示: 销售代理:

    selling agent:  Order#  Sale_item_1 Sale_item_2 %_of_TOTAL_order
    jim              abc    $1.00       $2.00       14.29%
    steve            abc    $3.00       $4.00       33.33%
    carl             abc    $5.00       $6.00       52.38%
    carl             def    $7.00       $8.00       31.25%
    steve            def    $9.00       $9.00       37.50%
    jim              def    $8.00       $7.00       31.25%
    steve            ghi    $6.00       $5.00       61.11%
    patty            ghi    $4.00       $3.00       38.89%

最佳答案

类似这样的事情:

SELECT 
  s.*, 
  ROUND (
  100.00 * (s.sale_item_1 + s.sale_item_2) /
  (SELECT 
     SUM(sale_item_1 + sale_item_2)
     FROM sales_db 
     WHERE orderNumber = s.orderNumber), 2) percentage
FROM sales_db s;

请参阅demo

关于sql - 在 Postgres 中,如何在同一查询中进行 COUNT 和 WHERE,然后对结果进行数学运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54055923/

相关文章:

mysql - mysql 中的运行平均值

postgresql - Postgres 规则替换 WHERE 子句中的单词

postgresql - 无法连接到 PostgreSQL 9.3

postgresql - 如何计算 Postgres 中两个日期之间除星期日以外的天数?

sql - SQL Server 中的求和或乘法

mysql - 用户在一段时间内购买的平均商品数量

sql - 选择组中的最小值

postgresql - 本地主机和生产环境中不同的 ORDER BY 行为

json - Grails 在第二个数据库上运行查询 postgresql 以生成原始 JSON

postgresql - 如何将行组变成单独的列?