【发布时间】:2014-10-16 23:48:14
【问题描述】:
我正在尝试跟踪销售代表的总销售额以及他上班的时间。
我有以下两张表:
表1:
employeeID | item | price | timeID
----------------------------------------
1 | 1 | 12.92 | 123
1 | 2 | 10.00 | 123
1 | 2 | 10.00 | 456
表2:
ID | minutes_in_shift
--------------------------
123 | 45
456 | 15
我将使用以下 SQL 连接这两个查询:
SELECT
t1.employeeID, t1.item, t1.price, t1.shiftID, t2.minutes_in_shift
FROM table1 t1
JOIN table 2 t2 ON (t2.ID = t1.timeID)
这将返回下表:
employeeID | item | price | timeID | minutes_in_shift
---------------------------------------------------
1 | 1 | 12.92 | 123 | 45
1 | 2 | 10.00 | 123 | 45
1 | 2 | 10.00 | 456 | 15
但是,我希望合并结果有这样的结果:
employeeID | itemsSold | priceTotals | totaltimeworked
-----------------------------------------------------------------
1 | 3 | 32.92 | 60
我可以将 COUNT 和 SUM 用于项目和价格,但我无法弄清楚如何以上面显示的方式正确显示总工作时间。 注意:我只是在计算工作时间时遇到了麻烦。在 123 班 - 员工 1 工作 45 分钟,不管他卖了多少物品。
有什么建议吗?
【问题讨论】:
-
对于 itemsSold 和 priceTotals 使用
select employeeID, count(*), sum(price) group by employeeID。你如何计算总工时? -
cha - items 表是一个,它连接到一个显示存储时间量的工作时间表。这是字面时间(123 班他上 45 分钟,456 班,他上 15 分钟,不管售出的物品如何)
-
从您的样本中可以实现。但是,如果您可以向我们展示用于构建示例的源 SQL,我们可能会对其进行优化以立即获得所需的结果
-
@cha - 重新设计的问题
标签: sql postgresql