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

MySQL - Условен COUNT с GROUP BY

Ако droid_v може да бъде само 0, 1, 2, 3 или 4, тогава COUNT(DISTINCT) никога няма да върне повече от 5, тъй като има само пет възможни стойности. Това ли искаш? Ако е така, опитайте това:

SELECT puid, COUNT(DISTINCT CASE WHEN droid_v > 0 THEN droid_v ELSE 0 END) - 1 AS droid /* -1 for the case where droid_v is 0 */
     , COUNT(DISTINCT sig_v) AS sig
     , SUM(NoExt)  AS hits

Актуализация: Ами сега, извинете, горното не е съвсем правилно, тъй като може да не има нула. Трябва да бъде:

SELECT puid, COUNT(DISTINCT CASE WHEN droid_v > 0 THEN droid_v END) AS droid

Ако, от друга страна, искате да преброите всички редове, където droid_v> 0, тогава мисля, че искате това:

SELECT puid, SUM(CASE WHEN droid_v > 0 THEN 1 ELSE 0 END) AS droid
     , COUNT(DISTINCT sig_v) AS sig
     , SUM(NoExt)  AS hits

Надявам се това да помогне.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. поръчай по.... номера? Помогнете ми да сортирам ip адресите

  2. JDBC VS Hibernate

  3. Как да инсталирате Adminer в собствено приложение

  4. Избиране срещу подмножества на списък в MySQL

  5. SQL Server 2005 внедряване на MySQL ЗАМЕНИ В?