总和不等于并从SQL查询结果中删除重复项

问题描述 投票:0回答:1

我的基本查询:

SELECT project_id
       name
       stories_produced
       on_date
      FROM project_prod
      WHERE on_date IN ('2017-03-01', '2017-06-10')
      ORDER BY project_id

它可以为我提供这些输出:

输出示例:

id       name                   stories_produced        on_date
1042    project 1               1001 (wanted)           2017-03-01
1042    project 1               1801 (wanted)           2017-06-10
1568    project 2               355  (wanted)           2017-06-10
1405    project 3               1    (not wanted)       2017-03-10
1405    project 3               1    (not wanted)       2017-06-10

Obs:(id,on_date)受到限制,这意味着在特定日期始终只能有一个项目生产的记录。

具有相同ID且在两个日期中都存在并且具有不同生产价值(需要)]的重复记录

单个记录,仅在其中一个日期上存在(需要)

问题:*

具有相同ID且在两个日期中都存在并且具有等于

生产值(不需要)的重复记录

我当前的查询,需要更改

      select project_id 
        name 
        CASE
          WHEN max(stories_produced) - min(stories_produced) = 0    
          THEN max(stories_produced)
          ELSE max(stories_produced) - min(stories_produced)
        END AS 'stories_produced'
        from project_prod
      WHERE on_date IN ('2017-03-01', '2017-06-10')
      group by project_id;

输出示例:

id       name                   stories_produced        
1042    project 1               800 (wanted)
1568    project 2               355  (wanted)
1405    project 3               1    (not wanted)

CASE当前正在not

处理第三个约束(重复的记录,具有相同的id,并且在两个日期中都存在,并且具有相等的生产值(不需要)])] >>

是否有可能满足此条件?

我的基本查询:从project_prod中选择project_id名称为story_produced on_date,在on_date IN('2017-03-01','2017-06-10')ORDER BY project_id可以获取...

<<
一个选项使用not exists

select p.project_id, p.name, p.stories_produced, p.on_date, from project_prod p where on_date in ('2017-03-01', '2017-06-10') and not exists ( select 1 from project_prod p1 where p1.on_date in ('2017-03-01', '2017-06-10') and p1.on_date <> p.date and p1.id = p.id and p1.stories_produced <> p.stories_produced ) order by project_id

mysql sql database logic
1个回答
0
投票
一个选项使用not exists
© www.soinside.com 2019 - 2024. All rights reserved.