#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 Отлично. Не могли бы вы отметить это как ответ в этом случае, пожалуйста?