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

Grupuj według liczby (najlepszych 5) i liczby (wszystkie pozostałe)

W MySQL prawdopodobnie najłatwiejszym sposobem wyrażenia tego jest użycie tabeli tymczasowej:

create temporary table temp as (
    id int not null auto_increment,
    CaseLabel varchar(255),
    CasesResolved int
);

insert into temp(CaseLabel, CasesResolved)
    SELECT deskcases.Labels, COUNT(deskcases.Labels)AS CaseCount
    FROM deskcases
    WHERE deskcases.Labels NOT LIKE ''
          AND deskcases.Labels NOT LIKE '%SPAM%'
          AND deskcases.Labels NOT LIKE '%Online Orders%'
          AND deskcases.Labels NOT LIKE '%Internal SPAM%'
          AND deskcases.`Case Status` LIKE 'Resolved'
          AND deskcases.`Resolved At` > CURDATE()- INTERVAL 7 DAY
    GROUP BY deskcases.Labels
    ORDER BY CaseCount DESC;

select (case when id <= 5 then caselabel else 'Other' end),
       SUM(casesResolved) as CasesResolved
from temp
group by (case when id <= 5 then caselabel else 'Other' end)
order by MAX(id) desc

id kolumna w tabeli tymczasowej dodaje numer wiersza do każdego wiersza. W każdej innej prawdziwej bazie danych użyjesz row_number() funkcja, ale MySQL jej nie obsługuje.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. wiele żądań do węzła express problem z synchronizacją mysql

  2. za pomocą mysqli, aby zapobiec wstrzykiwaniu sql, jak ustawić NULL lub CURRENT_DATE?

  3. Czy można wyłączyć usuwanie w tabeli na MYSQL?

  4. Jak bezpiecznie uciec przed danymi wejściowymi w php dla mysql

  5. MySQL — warunkowe COUNT z GROUP BY