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和日期
求大神帮忙
由于新人,分数有限,拜托了
------解决方案--------------------
现有字段为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