English 中文(简体)
服务器上的合计(按组别)如何工作?
原标题:How do aggregates (group by) work on SQL Server?
  • 时间:2009-09-24 11:41:05
  •  标签:
最佳回答

通常使用<代码>Stream Aggregate或Hash Aggregate

  • <编码> 简化“<<>代码”对结果进行分类,对结果进行扫描,并将每个新价值(不等于扫描中的最后一)。 它可以保留一组国家累计变量。

  • http://www.un.org/Depts/DGACM/index_french.htm 每一条目都保存了以散射错误为依据并更新的合计国家变量。

参看<代码>AVG。 它需要两种国家变量:sumcount

grouper  value
1        4
1        3
2        8
1        7
2        1
1        2
2        6
2        3

Stream Aggregate

  1. 首先,它需要区分价值观:

    grouper  value
    1        4
    1        3
    1        7
    1        2
    2        8
    2        1
    2        6
    2        3
    
    • 然后,它保留一套国家变量,先入0,并扫描分类结果:

      grouper value sum count -- Entered -- Variables: 0 0 1 4 4 1 1 3 7 2 1 7 14 3 1 2 16 4 -- Group change. Return the result and reinitialize the variables -- Returning 1, 4 -- Variables: 0 0 2 8 8 1 2 1 9 2 2 6 15 3 2 3 18 4 -- Group change. Return the result and reinitialize the variables -- Returning 2, 4.5 -- End

Hash aggregate

  • 仅对数值进行扫描,并将国家变量保留在散列表中:

    grouper  value
    -- Hash miss. Adding new entry to the hash table
    --             [1] (0,  0)
    -- ... and updating it:
    1        4     [1] (4,  1)
    -- Hash hit. Updating the entry:
    1        3     [1] (7,  2)
    -- Hash miss. Adding new entry to the hash table
    --             [1] (7,  2)  [2] (0, 0)
    -- ... and updating it:
    2        8     [1] (7,  2)  [2] (8,  1)
    1        7     [1] (14, 3)  [2] (8,  1)
    2        1     [1] (14, 3)  [2] (9,  2)
    1        2     [1] (16, 4)  [2] (9,  2)
    2        6     [1] (16, 4)  [2] (15, 3)
    2        3     [1] (16, 4)  [2] (18, 4)
    -- Scanning the hash table and returning the aggregated values
    -- 1   4
    -- 2   4.5
    

通常情况下,如果已经订购结果,结果就会更快(例如,这些数值源自指数或由前一次作业分类的结果)。

较快的是结果没有分类(希望比分类更快)。

不幸的是,与大多数其他系统不同的是,<代码>SQL 服务器无法有效地利用这一系统,因为它在制作<代码>时并不好。 INDEX SKIP SCAN (jumping over separate index keys).

简单的<条码><<>/条码>和<条码>/条码>(无<条码>按条款排列的> 合计一栏的索引编制方法,MIN,GROUP BY,使用与其他合计功能相同的方法。

问题回答

AS i dont有一张桌子,一经我的习惯表审判

I defined Primary key = ID_PRICE

Select PRICE.ID_PRICE, Max(PRICE.COSTKVARH) - min(PRICE.COSTKVARH) from PRICE
GROUP BY PRICE.ID_PRICE 

计划:

PLAN (PRICE ORDER PK_PRICE)

改编计划:

PLAN (PRICE ORDER PK_PRICE)

在您的案例中,p.id是主要的关键,因此,适应性计划将成为病人的头等。 根据p_id,然后进行分类和差额计算。





相关问题
热门标签