Skip to content

Commit b39df7b

Browse files
Ticket 48504: Very slow AggregatedAnalysisResults query (#114)
1 parent ac98c98 commit b39df7b

File tree

1 file changed

+53
-54
lines changed

1 file changed

+53
-54
lines changed

genotyping/resources/assay/Haplotype/queries/AggregatedAnalysisResults.sql

Lines changed: 53 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -16,57 +16,56 @@
1616
-- query to display analysis results with one animal per row
1717
-- NOTE: this query could probably use some optimization at some point.
1818
SELECT
19-
Summary.AnimalId,
20-
Summary.TotalReads,
21-
Summary.TotalIdentifiedReads,
22-
Summary.TotalPercentUnknown,
23-
a.ConcatenatedHaplotypes,
24-
CASE WHEN ac.AssignmentCount > 2 THEN TRUE ELSE FALSE END AS InconsistentAssignments,
25-
ac.AssignmentCount,
26-
-- We don't know the names of all of the haplotype types (A, B, DR, STR, etc), so we have to select *
27-
iht.*
28-
FROM (
29-
-- Get the read counts
30-
SELECT
31-
Data.AnimalId,
32-
SUM(Data.TotalReads) AS TotalReads,
33-
SUM(Data.IdentifiedReads) AS TotalIdentifiedReads,
34-
CAST(CASE WHEN SUM(Data.TotalReads) = 0 THEN NULL ELSE ((1.0 - CAST(SUM(Data.IdentifiedReads) AS DOUBLE) / CAST(SUM(Data.TotalReads) AS DOUBLE)) * 100.0) END AS DOUBLE) AS TotalPercentUnknown
35-
FROM
36-
Data
37-
WHERE Data.Enabled = TRUE
38-
GROUP BY Data.AnimalId
39-
) Summary
40-
JOIN genotyping.Animal AS a ON a.RowId = Summary.AnimalId
41-
JOIN (
42-
-- Get all the haplotype assignments, pivoted by type (A, B, DR, STR, etc)
43-
SELECT
44-
aa.AnimalId AS HiddenAnimalId @Hidden, -- Hide so that we only get a single AnimalId column
45-
MIN(CASE WHEN aha.DiploidNumber = 1 THEN h.Name ELSE NULL END) AS Haplotype1,
46-
MIN(CASE WHEN aha.DiploidNumber = 2 THEN h.Name ELSE NULL END) AS Haplotype2,
47-
h.Type AS Type
48-
FROM genotyping.AnimalHaplotypeAssignment AS aha
49-
JOIN genotyping.Haplotype AS h ON aha.HaplotypeId = h.RowId
50-
JOIN genotyping.AnimalAnalysis AS aa ON aha.AnimalAnalysisId= aa.RowId
51-
WHERE aa.Enabled = TRUE
52-
GROUP BY aa.AnimalId, h.Type
53-
PIVOT Haplotype1, Haplotype2 BY Type
54-
) iht
55-
ON Summary.AnimalId = iht.HiddenAnimalId
56-
JOIN (
57-
SELECT
58-
MAX(AssignmentCount) AS AssignmentCount,
59-
HiddenAnimalId @Hidden
60-
FROM (
61-
SELECT
62-
aa.AnimalId AS HiddenAnimalId @Hidden, -- Hide so that we only get a single AnimalId column
63-
COUNT (DISTINCT h.Name) AS AssignmentCount @Hidden
64-
FROM genotyping.AnimalHaplotypeAssignment AS aha
65-
JOIN genotyping.Haplotype AS h ON aha.HaplotypeId = h.RowId
66-
JOIN genotyping.AnimalAnalysis AS aa ON aha.AnimalAnalysisId= aa.RowId
67-
WHERE aa.Enabled = TRUE
68-
GROUP BY aa.AnimalId, h.Type
69-
) X
70-
GROUP BY HiddenAnimalId
71-
) ac
72-
ON Summary.AnimalId = ac.HiddenAnimalId
19+
20+
Summary.AnimalId,
21+
Summary.TotalReads,
22+
Summary.TotalIdentifiedReads,
23+
Summary.TotalPercentUnknown,
24+
25+
a.ConcatenatedHaplotypes,
26+
CASE WHEN iht.AssignmentCount > 2 THEN TRUE ELSE FALSE END AS InconsistentAssignments,
27+
iht.AssignmentCount,
28+
-- We don't know the names of all of the haplotype types (A, B, DR, STR, etc), so we have to select *
29+
iht.*
30+
FROM
31+
genotyping.Animal AS a
32+
33+
JOIN (
34+
-- Get all the haplotype assignments, pivoted by type (A, B, DR, STR, etc)
35+
SELECT
36+
HiddenAnimalId @Hidden,
37+
MIN(Haplotype1) AS Haplotype1,
38+
MIN(Haplotype2) AS Haplotype2,
39+
MIN(AssignmentCount) AS AssignmentCount @Hidden,
40+
Type
41+
FROM (
42+
SELECT
43+
aa.AnimalId AS HiddenAnimalId @Hidden, -- Hide so that we only get a single AnimalId column
44+
MIN(CASE WHEN aha.DiploidNumber = 1 THEN h.Name ELSE NULL END) AS Haplotype1,
45+
MIN(CASE WHEN aha.DiploidNumber = 2 THEN h.Name ELSE NULL END) AS Haplotype2,
46+
COUNT (DISTINCT h.Name) AS AssignmentCount @Hidden,
47+
h.Type AS Type
48+
FROM genotyping.AnimalHaplotypeAssignment AS aha
49+
JOIN genotyping.Haplotype AS h ON aha.HaplotypeId = h.RowId
50+
JOIN genotyping.AnimalAnalysis AS aa ON aha.AnimalAnalysisId= aa.RowId
51+
WHERE aa.Enabled = TRUE
52+
GROUP BY aa.AnimalId, h.Type
53+
) x
54+
GROUP BY HiddenAnimalId, Type
55+
PIVOT Haplotype1, Haplotype2 BY Type IN (SELECT DISTINCT Type FROM genotyping.Haplotype)
56+
) iht
57+
ON a.RowId = iht.HiddenAnimalId
58+
59+
JOIN (
60+
-- Get the read counts
61+
SELECT
62+
AnimalId,
63+
SUM(TotalReads) AS TotalReads,
64+
SUM(IdentifiedReads) AS TotalIdentifiedReads,
65+
CAST(CASE WHEN SUM(TotalReads) = 0 THEN NULL ELSE ((1.0 - CAST(SUM(IdentifiedReads) AS DOUBLE) / CAST(SUM(TotalReads) AS DOUBLE)) * 100.0) END AS DOUBLE) AS TotalPercentUnknown
66+
FROM
67+
Data
68+
WHERE Enabled = TRUE
69+
GROUP BY AnimalId
70+
) Summary
71+
ON a.RowId = Summary.AnimalId

0 commit comments

Comments
 (0)