sql >> Database teknologi >  >> RDS >> Mysql

Kan ikke kumulativt summere `COUNT(*)`

Jeg er enig med @Ashalynd, værdien af ​​count(*) er ikke evalueret endnu. Her er et lille eksperiment, jeg lavede:

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

For hver gruppe initialiseres variablen som 0. Det betyder, at COUNT(*) ikke er blevet evalueret endnu.

Også, når du gør:

 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
 

Det behøver ikke at evaluere 1. Det opsummerer det direkte, og det giver dig den kumulative sum.



  1. Mysql Events Execution Starttid

  2. PHP-kommandoer ude af synkronisering

  3. MYSQL Syntaksfejl - Codeigniter-funktion til at beregne omkostninger

  4. Indstilling af kolonner variabelt i Mysql