Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Nie można sumować `COUNT(*)`

Zgadzam się z @Ashalynd, wartość count(*) nie jest jeszcze oceniana. Oto mały eksperyment, który przeprowadziłem:

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

Dla każdej grupy zmienna jest inicjowana jako 0. Oznacza to, że COUNT(*) nie zostało jeszcze ocenione.

Ponadto, kiedy to zrobisz:

 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

Nie musi oceniać 1. Bezpośrednio sumuje i daje skumulowaną sumę.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skopiuj wiersz, ale z nowym identyfikatorem

  2. Instalowanie klastra Percona XtraDB na CentOS 7

  3. mysql sortuj według, najpierw null, a potem DESC

  4. Aktualizacja MySQL z jednej tabeli do drugiej z warunkiem nie działa?

  5. MYSQL wyłącz automatyczne przycinanie