Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL - COUNT có điều kiện với GROUP BY

Nếu droid_v chỉ có thể là 0, 1, 2, 3 hoặc 4, thì COUNT (DISTINCT) sẽ không bao giờ trả về nhiều hơn 5, vì chỉ có năm giá trị có thể. Đó là điều bạn muốn? Nếu vậy, hãy thử cách này:

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

Cập nhật: Rất tiếc, xin lỗi, phần trên không đúng vì có thể không một số không. Nó phải là:

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

Mặt khác, nếu bạn muốn tổng số tất cả các hàng có droid_v> 0, thì tôi nghĩ bạn muốn điều này:

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

Hy vọng điều này sẽ hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP MySQL mysql_fetch_assoc với các khóa mảng được phân biệt bằng ký hiệu 'as'

  2. MySQL:Cách chọn hàng loạt các hàng với nhiều cặp trong mệnh đề WHERE

  3. Mã hóa mật khẩu và tạo muối Crypt (), được thực thi tốt?

  4. Làm thế nào để bạn tạo các câu lệnh đã chuẩn bị với đá quý mysql2?

  5. MySQL:Phiên bản ngược của LIKE là gì?