Как суммировать вычисленные результаты из запроса MAX

#sql

#sql

Вопрос:

Я был бы рад, если бы кто-нибудь смог мне помочь в этом.

Есть несколько выборочных номеров, у каждого есть несколько анализов, и у них может быть или не быть реплицированного анализа. Я пытаюсь выполнить поиск по каждому номеру выборки по количеству повторов его анализа.

Вот пример того, как выглядит таблица, с фильтром, ищущим конкретный образец:

введите описание изображения здесь

 SELECT MAX(ts.replicate_count) - 1
                                    from test ts
                                    where ts.sample_number = 72023
                                    GROUP BY ts.analysis
  

С помощью этого запроса он показывает количество повторов по указанному образцу, группируя его по анализу. В этом случае, поскольку образец 72023 содержит 2 анализа, он показывает 2 результата :

введите описание изображения здесь

Итак, теперь, когда у меня есть каждая копия, я хотел бы просто показать номер выборки и сумму этих результатов, которая, если следовать изображению, должна быть равна 2.

Получил запрос, но я не уверен, как заставить его работать должным образом:

 select t.sample_number,SUM(SELECT MAX(ts.replicate_count) - 1
                                    from test ts
                                    where ts.sample_number = t.sample_number
                                    GROUP BY ts.analysis)
                       
FROM TEST t
where t.sample_number = 72023
  

Почти близкий результат, который я хотел бы получить, был бы примерно таким

введите описание изображения здесь

но, очевидно, с правильной информацией.

Был бы рад, если бы кто-нибудь мог мне помочь в этом.

НОВОЕ

Получил следующий код, но мне нужно просто показать один номер выборки и результат поля в середине, это будет общее количество повторов :

 
select s.sample_number,(SELECT SUM(rep) as replicates
                        FROM (SELECT ts.sample_number, MAX(ts.replicate_count) - 1  as rep
                                from test ts
                                where ts.sample_number = s1.sample_number
                                GROUP BY ts.sample_number, ts.analysis) A 
                        GROUP BY sample_number),s1.sample_number
from sample s
JOIN sample s1 ON s.sample_number = s1.parent_aliquot
where s.parent_aliquot = 0 and s.sample_number = 42734
order by s.sample_number DESC

  

Вот что дает мне этот код:

введите описание изображения здесь

Комментарии:

1. Пожалуйста, предоставьте образцы данных и желаемые результаты в виде текстовых таблиц в вопросе.

Ответ №1:

Это делает то, что вы имеете в виду?

 
SELECT sample_number, SUM(rep) as replicates
FROM 
(
    SELECT ts.sample_number, MAX(ts.replicate_count) - 1 as rep
    from test ts
    where ts.sample_number = t.sample_number
    GROUP BY ts.sample_number, ts.analysis

) A

GROUP BY sample_number
  

Комментарии:

1. @dontknowcoding Отлично. Не могли бы вы отметить это как ответ в этом случае, пожалуйста?