简体   繁体   中英

Distinct SUM with Mysql Count

I have a query:

SELECT

    t1.name as Name

    count ( distinct t2.key ) as Total
    SUM ( IF( t2.time = '12:00' , 1 , 0) ) as QttMidDay 

FROM t1

LEFT JOIN t2 on t1.key = t2.key

GROUP BY t1.key

The question is, how i do the "Conditional Count" on the 2º parameter SUM for QttMidDay ?

I am guessing that you can solve your problem by aggregating before the join. My best guess is:

SELECT t1.name as Name, t2.Total, t2.QttMidDay 
FROM t1 LEFT JOIN
     (SELECT COUNT(DISTINCT t2.key) as Total,
             SUM(t2.time = '12:00') as QttMidDay
      FROM t2 
      GROUP BY t2.key
     ) t2
     ON t1.key = t2.key;

I am not sure if the COUNT(DISTINCT) is necessary in the subquery.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM