Может кто-нибудь дать мне запрос SQL для следующей таблицы - PullRequest
0 голосов
/ 16 мая 2018

У меня есть таблица с именем eprism_reports, и таблица выглядит следующим образом:

enter image description here

В этой таблице, когда я использую запрос

SELECT  * 
FROM eprism_dashboard.eprism_reports 
where CARRIER_NAME='QA_T_MOB'

Я получаю следующий Resultset enter image description here

SO после получения набора результатов снова, я хочу удалить дубликат TAG_NAME, и в этом дубликате TAG_NAME должен появиться уникальный TAG_NAME и RERUNдолжно быть максимум

Пример: в Resultset у нас есть два тэга с дублированным именем mytag. Я хочу, чтобы уникальный с ReRUn был MAX и Remaining ResultSet как обычно. Пожалуйста, помогите мне в этом

Ожидаемый результат должен быть следующим:

id  CARRIER_NAME CLAIM_TYPE STATUS   DATE       TAG_NAME  RERUN
9   QA_T_MOB    Approved    Passed  2018-05-15  Theft       0
10  QA_T_MOB    Denied      Passed  2018-05-15  Denied      0
11  QA_T_MOB    In Review   Passed  2018-05-15  In Review   0
12  QA_T_MOB    Approved    Failed  2018-05-15  mytag       1

Ответы [ 4 ]

0 голосов
/ 16 мая 2018

Я бы просто использовал subquery с корреляцией подход:

select e.* 
from eprism_reports e
where CARRIER_NAME='QA_T_MOB' and
      id = (select id 
            from eprism_reports
            where TAG_NAME = e.TAG_NAME
            order by rerun DESC
            LIMIT 1);

Вы также можете выразить это как:

select e.* 
from eprism_reports e
where CARRIER_NAME='QA_T_MOB' and
      RERUN = (select max(RERUN) from eprism_reports where TAG_NAME = e.TAG_NAME);
0 голосов
/ 16 мая 2018

Вы можете попробовать запрос как этот => http://sqlfiddle.com/#!9/057184/1

Выберите значение Max(rerun) для каждого tag group, затем запросите таблицу по joining on rerun and tag column

SELECT t.*
FROM   eprism_reports t
JOIN   ( SELECT MAX(rerun) rerun
              , tag
         FROM   eprism_reports
         GROUP  BY tag ) t2
  ON( t.tag   = t2.tag
  AND t.rerun = t2.rerun ) 
0 голосов
/ 16 мая 2018

Чтобы получить наибольшую повторную строку для каждой группы, вы можете сделать самостоятельное объединение

select a.* 
from eprism_reports a
left join eprism_reports b on a.CARRIER_NAME = b.CARRIER_NAME
                           and a.TAG_NAME = b.TAG_NAME 
                           and a.RERUN < b.RERUN
where a.CARRIER_NAME='QA_T_MOB' 
and b.CARRIER_NAME is null
0 голосов
/ 16 мая 2018
SELECT TAG_NAME, MAX(RERUN) 
FROM eprism_dashboard.eprism_reports 
where CARRIER_NAME='QA_T_MOB'
GROUP BY TAG_NAME
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...