ماهو - تحميل mysql




MySql: هل من الممكن "SUM IF" أو "COUNT IF"؟ (4)

لدي عمود "ساعة" لدي عمود "من النوع" (يمكن أن يكون 1 أو 2 أو 3)

أود القيام بشيء مثل:

SELECT count(id), SUM(hour) as totHour, SUM( IF ( kind = 1, 1, 0 ) ) as countKindOne

أو

SELECT count(id), SUM(hour) as totHour, COUNT( IF ( kind = 1 ) ) as countKindOne

لكن mysql أخبرني لدي خطأ ... ما هو الخطأ !؟

يرجى الاطلاع على هذا الموضوع stackoverflow: MySQL SUM IF field b = field a

.. أنا غير قادر على الرد على هذا ...


تريد شيء مثل:

SELECT count(id), SUM(hour) as totHour, SUM(kind=1) as countKindOne;

لاحظ أن المثال الثاني كان وثيقًا ، لكن الدالة IF () دائمًا ما تتطلب ثلاث وسيطات ، لذلك كان يجب أن يكون COUNT(IF(kind=1,1,NULL)) . أفضل بناء جملة SUM () الموضح أعلاه لأنه موجز.


من MYSQL قمت بحل المشكلة مثل هذا:

SUM(CASE WHEN used = 1 THEN 1 ELSE 0 END) as amount_one,

آمل أن يساعد هذا: د


يمكنك أيضًا استخدام SUM + IF وهو أقصر من SUM + CASE :

SELECT
    count(id)
    , SUM(IF(kind=1, 1, 0)) AS countKindOne
    , SUM(CASE WHEN kind=2 THEN 1 ELSE 0 END) AS countKindTwo

يمكنك استخدام عبارة CASE :

SELECT count(id), 
    SUM(hour) as totHour, 
    SUM(case when kind = 1 then 1 else 0 end) as countKindOne






mysql