sql >> Databáze >  >> RDS >> Mysql

Nelze kumulativně sčítat `COUNT(*)`

Souhlasím s @Ashalynd, hodnota count(*) zatím není vyhodnocena. Zde je malý experiment, který jsem provedl:

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

Pro každou skupinu je proměnná inicializována jako 0. To znamená, že COUNT(*) ještě nebylo vyhodnoceno.

Také, když to uděláte:

 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

Nemusí hodnotit 1. Přímo to sečte a dá vám kumulativní součet.



  1. chyba běhu:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

  2. Optimalizujte dotaz na vlastní připojení MySQL

  3. Vybírání dynamických hodnot z HTML formuláře a ukládání do PHP proměnných

  4. Spouštíte mysql_upgrade v Dockeru?