मैं @Ashalynd से सहमत हूं, गिनती (*) का मूल्य अभी तक मूल्यांकन नहीं किया गया है। यहाँ मैंने एक छोटा सा प्रयोग किया है:
1.
SELECT
GROUP_ID,
@COUNTER := @COUNTER + COUNT(*) GROUPCOUNT,
@COUNTER COUNTER
FROM
TEST_GROUP_CUMULATIVE,
(SELECT @COUNTER := 0) R
GROUP BY
GROUP_ID;
-- RESULT
============
GROUP_ID GROUPCOUNT COUNTER
------------------------------------
1 1 0
2 1 0
3 1 0
2.
SELECT @COUNTER;
-- RESULT
=============
@COUNTER
--------
1
प्रत्येक समूह के लिए चर को 0 के रूप में प्रारंभ किया जा रहा है। इसका अर्थ है कि COUNT(*) का मूल्यांकन अभी तक नहीं किया गया है।
साथ ही, जब आप ऐसा करते हैं:
1.
SELECT
GROUP_ID,
@COUNTER := @COUNTER + 1 GROUPCOUNT,
@COUNTER COUNTER
FROM
TEST_GROUP_CUMULATIVE,
(SELECT @COUNTER := 0) R
GROUP BY
GROUP_ID;
-- RESULT
============
GROUP_ID GROUPCOUNT COUNTER
------------------------------------
1 1 1
2 1 2
3 1 3
2.
SELECT @COUNTER;
-- RESULT
=============
@COUNTER
--------
3
इसे 1 का मूल्यांकन करने की आवश्यकता नहीं है। यह सीधे इसका सारांश देता है और यह आपको संचयी योग देता है।