SQL GROUP CORRELATED QUERY

时间:2015-03-14 06:17:01

标签: sql-server join group-by subquery correlated-subquery

使用窗口函数失败后,我通过使用大量相关查询创建了数据的分析摘要视图。我对这种观点的未来表现有一种不好的感觉,我相信有更好的方法可以做到这一点,我很乐意学习如何。我已经读过使用JOIN可以实现相同的功能,但是因为我的子查询中有几个不同的WHERE条件,所以我似乎无法理解它。该视图的代码如下:

SELECT colG1, colG2, colG3,

-- GET MIN AND MAX
MIN(colA) AS MinA, 
MAX(colA) AS MaxA,

-- GET TOP VALUE
(SELECT TOP (1) colA
FROM myTable
WHERE colG1 = t1.colG1
    AND colG2 = t1.colG2
    AND colG3 = t1.colG3
ORDER BY Date DESC) 
AS TopA, 

MIN(colB) AS WorstB,

-- GET COUNT OF LESS-THAN 0
(SELECT COUNT(*)
FROM myTable
WHERE (colA < 0) 
    AND colG1 = t1.colG1
    AND colG2 = t1.colG2
    AND colG3 = t1.colG3) 
AS LosingCount,

-- GET COUNT OF GREATER-THAN 0
(SELECT COUNT(*)
FROM myTable
WHERE (colA >= 0) 
    AND colG1 = t1.colG1
    AND colG2 = t1.colG2
    AND colG3 = t1.colG3) 
AS WinningCount

FROM myTable AS t1
GROUP BY colG1, colG2, colG3

我不禁对GROUP和WHERE以及潜在的JOIN感到困惑。如果这是一个重复的问题,请道歉。

感谢任何帮助。谢谢你。

0 个答案:

没有答案