我想计算每个月内不同日期的数量。
我有一个数据集,看起来像这样:
TIMESTAMP
------------------
2017-10-25 14:39:51
2017-10-25 15:00:51
2017-11-10 02:39:42
2018-09-24 14:39:55
2018-09-25 13:25:01
2019-02-12 12:23:44
...
所以我的预期输出将是:
year_month | count
2017-10 2
2018-09 2
2019-02 1
到目前为止,我已经尝试了以下代码,但返回的结果不正确:
WITH F AS(
SELECT concat(YEAR(TIMESTAMP), MONTH(TIMESTAMP)) AS year_month
FROM tbl
WHERE TYPE = 'Site'
AND TO_SITE = 'location'
)
SELECT count(year_month), year_month
FROM F
GROUP BY year_month
我不必担心一天中的时间。我只想计算每个月的不同天数。预先感谢您的帮助。
在SQL Server中,我建议使用以下方法之一:
select year(timestamp), month(timestamp), count(distinct convert(date, timestamp)
from t
group by year(timestamp), month(timestamp);
要么:
select format(timestamp, 'yyyy-MM'), count(distinct convert(date, timestamp))
from t
group by format(timestamp, 'yyyy-MM');
我认为不需要子查询或CTE。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句