一个字段基于另一个字段求​​和

Summation of a field based on another field

我正在 iReport 中创建报告。我正在使用 postgresql9.2 数据库。尝试基于另一个字段创建总和。首先,我按车辆编号按字段分组创建报告,然后创建一个变量,我试图在其中按字段分组执行总和。

我的举报结果

vh_name    |  va_date   | trip_no |
Vehicle-01 | 2019-01-15 |   1     |
Vehicle-01 | 2019-01-15 |   1     |
Vehicle-01 | 2019-01-16 |   1     |
-----------+------------+---------+
Vehicle-02 | 2019-01-17 |   1     |
Vehicle-02 | 2019-01-18 |   1     |
Vehicle-02 | 2019-01-19 |   1     |
-----------+------------+---------+
Vehicle-03 | 2019-01-17 |   1     |
Vehicle-03 | 2019-01-17 |   1     |
Vehicle-03 | 2019-01-17 |   1     |
Vehicle-03 | 2019-01-18 |   1     |
-----------+------------+---------+

我的预期结果

vh_name    |  va_date   | trip_no | total_trip |
Vehicle-01 | 2019-01-15 |   1     |            |
Vehicle-01 | 2019-01-15 |   1     |     3      |
Vehicle-01 | 2019-01-16 |   1     |            |
-----------+------------+---------+-------------
Vehicle-02 | 2019-01-17 |   1     |            |
Vehicle-02 | 2019-01-18 |   1     |     3      |
Vehicle-02 | 2019-01-19 |   1     |            |
-----------+------------+---------+-------------
Vehicle-03 | 2019-01-17 |   1     |            |
Vehicle-03 | 2019-01-17 |   1     |            |
Vehicle-03 | 2019-01-17 |   1     |      4     |
Vehicle-03 | 2019-01-18 |   1     |            |
-----------+------------+---------+-------------

基于 Using SUM() without grouping the results,您的 SQL 应该看起来像这样:

SELECT vh_name, va_dat, trip_no, SUM(trip_sum.amount) as trip_sum
FROM my_trips
CROSS JOIN (
    SELECT SUM(amount) as amount FROM my_trips AS amount
    GROUP BY vh_name) trip_sum

请注意,唯一计数可能更容易(如果 trip_no 始终为 1):

SELECT vh_name, va_dat, trip_no, COUNT(DISTINCT vh_name) as amount
FROM my_trips