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

MySQL — warunkowe COUNT z GROUP BY

Jeśli droid_v może wynosić tylko 0, 1, 2, 3 lub 4, to COUNT(DISTINCT) nigdy nie zwróci więcej niż 5, ponieważ istnieje tylko pięć możliwych wartości. Czy tego chcesz? Jeśli tak, spróbuj tego:

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

Aktualizacja: Ups, przepraszam, powyższe nie jest całkiem w porządku, ponieważ może nie być być zero. Powinno być:

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

Z drugiej strony, jeśli chcesz policzyć wszystkie wiersze, w których droid_v> 0, to myślę, że chcesz to:

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

Mam nadzieję, że to pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd SQL:0, Stan SQL:08S01 Błąd łącza komunikacyjnego

  2. Nie można połączyć się z serwerem MySQL, błąd 111

  3. „Odmowa dostępu dla użytkownika „root”@„localhost” (przy użyciu hasła:NIE)”

  4. Czy możemy połączyć zdalną bazę danych MySQL w systemie Android za pomocą JDBC?

  5. Czy można wstawić nowy wiersz na górze tabeli MySQL?