ฉันพยายามที่จะปรับปรุงการรายได้ทั้งหมดสำหรับห้องทำงานยังตำแหน่งต่างกัน geographies. ที่ geographies ถูกกำหนดโดยวนและรูปหลายเหลี่ยมซึ่งทั้งคู่อยู่ในรูปร่างรูปร่างคอลัมน์
ตอนที่ฉันหนีไปกับการค้นหาข้างล่าง MySQL โย"R_INVALID_GROUP_FUNC_USE:ไม่ถูกต้องใช้ของกลุ่มฟังก์ชัน"
ฉันพยายามปรับเปลี่ยน เรื่ องตอบ,แต่ฉันไม่สามารถคิดออกจากตรรกะกับเงื่อนไขเซลร่วมกั geospatial ข้อมูลของมันไม่ง่ายอย่างเพิ่มเป็น subquery กับที่เงื่อนไขว่า. (หรือ?)
สำหรับคอนเท็กซ์ฉันมีเรื่อง 350 geographies และ 150,000 ออฟฟิศ
UPDATE
shapes s
LEFT JOIN offices ON (
CASE
WHEN s.type = 'circle' THEN ST_Distance_Sphere(o.coords, s.shape) < s.radius
ELSE ST_CONTAINS(s.shape, o.coords)
END
)
SET
s.totalRevenue = SUM(o.revenue);
ปรับปรุง:
มันจะได้ผลแต่มันช้าลงและสับสน มีเร็ว/มากก concise ทาง?
UPDATE
shapes s
LEFT JOIN (
SELECT
t.shape_id,
SUM(g.revenue) revenue
FROM
shapes t
LEFT JOIN offices o ON (
CASE
WHEN t.type = 'circle' THEN ST_Distance_Sphere(o.coords, t.shape) < t.radius
ELSE ST_CONTAINS(t.shape, o.coords)
END
)
GROUP BY
t.shape_id
) b ON s.shape_id = b.shape_id
SET
s.totalRevenue = b.revenue;