我有一个表有两种类型的记录 - 更新和结束(EventType - Column)。
更新记录具有PID和网页详细信息,其中结束记录具有卷(上载和下载)和PID详细信息(无网页详细信息:()。两种记录类型的公共字段均为PID。
现在从表中我需要获得所有网站的SUM(ULVolume + DLVolume) 即 - 得到每个的总和(ULVo + DLVol)(得到每个的PID(得到不同的网站))
最后,这是我正在寻找的单个查询。需要一些帮助。 附:数据库是巨大的> 10G和查询,这需要更少的时间。
预期产出
Website Sum(ULVolume+DLVolume)
apple.com 112343XXXXX
google.com 121232XXXXX
更新记录:
+-----------------+--------+---------------+----------+----------+
| PID | Event | Web | ULVolume | DLVolume |
+-----------------+--------+---------------+----------+----------+
| 199710687818416 | update | kaspersky.com | | |
| 199710687818417 | update | google.com | | |
| 199710687818418 | update | yahoo.com | | |
+-----------------+--------+---------------+----------+----------+
结束记录:
+-----------------+-------+------+----------+----------+
| PID | Event | Web | ULVolume | DLVolume |
+-----------------+-------+------+----------+----------+
| 199710687818416 | end | | 5187 | 309683 |
+-----------------+-------+------+----------+----------+
答案 0 :(得分:1)
试试这个:
select
u.website,
sum(e.ULVolume + e. DLVolume) as volume
from mytable e
left join mytable u on u.PID = e.PID and u.event ='update'
where e.Event = 'end'
group by 1;