一个字段基于另一个字段求和
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
我正在 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