如何在sql中删除重复的日期结果

时间:2016-05-07 09:36:47

标签: sql postgresql

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  

我尝试过复制,但它没有工作我不知道如何忽视烦人的一年,有人可以帮忙吗?

3 个答案:

答案 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)

如果你使用sql,

你可以在没有加入的情况下做到这一点。试试这个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)