我有两个要访问的流量表,它们正在联接并在地图上可视化。
我正在尝试编写一个计数器,该计数器创建一个查询结果,并计算一个特定IP地址在日志中显示的次数。我认为这将采用子查询的形式,该查询返回主查询正在选择的特定行的行数。
当我运行以下查询时,我得到的错误是more than one row returned by a subquery used as an expression
。
select
squarespace_ip_addresses.ip,
squarespace_ip_addresses.latitude,
squarespace_ip_addresses.longitude,
st_SetSrid(ST_MAKEPOINT(squarespace_ip_addresses.longitude, squarespace_ip_addresses.latitude), 4326) as geom,
(select count(hostname) from squarespace_logs group by hostname) as counter,
squarespace_logs.referrer
from
squarespace_ip_addresses
left outer join
squarespace_logs
on
squarespace_ip_addresses.ip = squarespace_logs.hostname
向我提出的建议是选择中的子查询,该子查询按主查询输出进行过滤,从而对每一行运行该查询。
有人有见识吗?
答案 0 :(得分:1)
汇总派生表(FROM
子句中的子查询)中的数据:
select
a.ip,
a.latitude,
a.longitude,
st_SetSrid(ST_MAKEPOINT(a.longitude, a.latitude), 4326) as geom,
c.count,
l.referrer
from squarespace_ip_addresses a
left join squarespace_logs l on a.ip = l.hostname
left join (
select hostname, count(*)
from squarespace_logs
group by hostname
) c on a.ip = c.hostname