मैं कोशिश कर रहा हूँ करने के लिए अद्यतन के लिए कुल राजस्व कार्यालयों में स्थित विभिन्न भौगोलिक क्षेत्रों. इस भौगोलिक क्षेत्रों से परिभाषित कर रहे हैं हलकों और बहुभुज कर रहे हैं, जो दोनों के आकार में.आकार स्तंभ ।
जब मैं क्वेरी को चलाने के नीचे, MySQL फेंकता "R_INVALID_GROUP_FUNC_USE: अवैध उपयोग के समूह समारोह"
मैं अनुकूलन करने की कोशिश की इस का जवाब है, लेकिन मैं समझ नहीं कर सकते हैं तर्क के साथ सशर्त शामिल होने और भू-स्थानिक डेटा-यह रूप में सरल नहीं है जोड़ने के एक सबक्वेरी के साथ एक कहां खंड. (या यह है?)
संदर्भ के लिए, मैं के बारे में 350 भौगोलिक और 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);
अद्यतन:
यह काम करता है, लेकिन यह धीमी है और भ्रामक है । वहाँ है एक तेज/अधिक संक्षिप्त तरीके से?
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;