Mysql
 sql >> база данни >  >> RDS >> Mysql

Групиране по брой (топ 5) и брой (всички други)

В MySQL вероятно най-лесният начин да изразите това е като използвате временна таблица:

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 колона във временната таблица добавя номер на ред към всеки ред. Във всяка друга реална база данни бихте използвали row_number() функция, но MySQL не поддържа това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. фатална грешка 'stdio.h' Python 2.7.3 на Mac OS X 10.7.5

  2. Изпращане на променливи в URL адреси в PHP с ехо

  3. Как да получите размера на базата данни MySQL за вашата база данни?

  4. Flask-SQLAlchemy:Не може да се свърже отново, докато невалидна транзакция не бъде отменена

  5. MySQL обобщени таблици - редове към колони. Запитване