ID DATE
1 2006-01-01
1 2007-01-01
2 2008-01-02
2 2007-01-02
2 2012-01-03
2 2011-02-20
规则是计算Jan中不同ID的日期数,其中重复日期不应计算两次。 (日期格式为DATE格式)
输出应该是这样的:
ID num_date
1 1
2 2
我尝试过复制,但它没有工作我不知道如何忽视烦人的一年,有人可以帮忙吗?
答案 0 :(得分:1)
SELECT id, count(*) AS num_date
FROM (
SELECT DISTINCT id, date
FROM my_table
WHERE extract(month from date) = 1) sub
GROUP BY id;
答案 1 :(得分:0)
试试这个:
select
f.id,
count(f.id) from (
select d.id,count(date_format(d.date,'%d')) dat from your_table d
where date_format(date,'%mm') = 01
group by id, date_format(date,'%m%d')
) f
group by f.id
答案 2 :(得分:-1)
你可以在没有加入的情况下做到这一点。试试这个1月我用01
对于PostgreSQL
SELECT ID, COUNT(distinct DATE_PART('DAY', DATE))
FROM[tableName]
WHERE DATE_PART('MONTH', DATE)=01
GROUP BY ID, DATE_PART('MONTH', DATE)
对于MS-SQL
SELECT ID, COUNT(distinct DATEPART(DAY, DATE))
FROM[tableName]
WHERE DATEPART(MONTH, DATE)=01
GROUP BY ID, DATEPART(MONTH, DATE)