INT comparison without WHERE statement

后端 未结 4 1960
别那么骄傲
别那么骄傲 2021-01-16 22:11

Im trying to write a MySQL statement that will bring me back these results:

## Name | Day 0 | Day 1 | Day 2 | Day 3 | Day 4 | Day 5 |
##Jeff  |   0   |    3          


        
4条回答
  •  自闭症患者
    2021-01-16 23:00

    Try this:

    SELECT
      emp.name AS '## Name',
      (SELECT COUNT(*)     
       FROM project p JOIN employee e ON p.number = e.number
       WHERE e.name = emp.name 
         AND datediff(str_to_date(p.dateEnded, '%Y-%m-%d'), e.dateStarted) = 0
       ) AS 'Day 0'
      ,(SELECT COUNT(*)
        FROM project p JOIN employee e ON p.number = e.number
        WHERE e.name = emp.name 
          AND datediff(str_to_date(p.dateEnded, '%Y-%m-%d'), e.dateStarted) = 1
       ) AS 'Day 1'
      ,(SELECT COUNT(*)
        FROM project p JOIN employee e ON p.number = e.number
        WHERE e.name = emp.name 
          AND datediff(str_to_date(p.dateEnded, '%Y-%m-%d'), e.dateStarted) = 2
       ) AS 'Day 2'
      ,(SELECT COUNT(*)
        FROM project p JOIN employee e ON p.number = e.number
        WHERE e.name = emp.name 
          AND datediff(str_to_date(p.dateEnded, '%Y-%m-%d'), e.dateStarted) = 3
       ) AS 'Day 3'
      ,(SELECT COUNT(*)
        FROM project p JOIN employee e ON p.number = e.number
        WHERE e.name = emp.name 
          AND datediff(str_to_date(p.dateEnded, '%Y-%m-%d'), e.dateStarted) = 4
       ) AS 'Day 4'
      ,(SELECT COUNT(*)
        FROM project p JOIN employee e ON p.number = e.number
        WHERE e.name = emp.name 
          AND datediff(str_to_date(p.dateEnded, '%Y-%m-%d'), e.dateStarted) >= 5
       ) AS 'Day 5'
    FROM employee emp
    GROUP BY emp.name
    

    See SQL Fiddle Demo (- have made some assumptions on your data based on the info provided).

提交回复
热议问题