めも

B表から抽出した名前で、A表の名前と一致し、尚且つ期間を指定して抽出し、曜日毎にその人数をカウントする(データは横へ展開するために面倒になった)

  SELECT
    SUM(WEEKDAY(DATE)=6) AS SAT,
    SUM(WEEKDAY(DATE)=0) AS SUN,
    SUM(WEEKDAY(DATE)=1) AS MON,
    SUM(WEEKDAY(DATE)=2) AS TUE,
    SUM(WEEKDAY(DATE)=3) AS WED,
    SUM(WEEKDAY(DATE)=4) AS THU,
    SUM(WEEKDAY(DATE)=5) AS FRI
  FROM
    A
  RIGHT JOIN
    (SELECT
       NAME
     FROM
       B
     WHERE
       AGE < 40
     ) AS B
  ON
    A.NAME = B.NAME
  WHERE
    A.DATE BETWEEN "2013-12-01" AND "2013-12-07"