sql语句统计,该如何处理

sql语句统计
现有字段为mmsi和lasttime的表格,数据类型为nvachar(10)和datetime,
如下所示
table test
     MMSI                         LastTime
        151323                     2014-01-01 00:10:23
        132165                     2014-01-01 04:11:21
        .........                           ...........
        147932                     2014-07-31 23:45:30
问:
 统计4月份数据完整(每日都有)的mmsi(在整个4.1-4.30都出现过的mmsi)
 统计4月份数据不完整的MMSI,并列出缺少数据的MMSI和日期
求大神帮忙
由于新人,分数有限,拜托了
------解决方案--------------------
-- 完整
  SELECT mmsi, 
         COUNT(DISTINCT CONVERT(varhcar(10), lasttime, 120)) days
    FROM test
   WHERE lasttime >= '2014-04-01'
     AND lasttime < '2014-05-01'
GROUP BY mmsi 
  HAVING COUNT(DISTINCT CONVERT(varhcar(10), lasttime, 120)) = 30
;
-- 不完整
WITH t (mmsi, days)
AS (
  SELECT mmsi, 
         COUNT(DISTINCT CONVERT(varhcar(10), lasttime, 120)) days
    FROM test
   WHERE lasttime >= '2014-04-01'
     AND lasttime < '2014-05-01'
GROUP BY mmsi 
  HAVING COUNT(DISTINCT CONVERT(varhcar(10), lasttime, 120)) < 30
)
SELECT test.*
  FROM test
  JOIN T
    ON T.mmsi = test.mmsi