相关疑难解决方法(0)

为什么窗口聚合函数的逻辑读取如此之高?

我发现在使用公共子表达式假脱机的执行计划中,报告的逻辑读取对于大型表来说非常高.

经过一些试验和错误后,我发现了一个似乎适用于下面的测试脚本和执行计划的公式. Worktable logical reads = 1 + NumberOfRows * 2 + NumberOfGroups * 4

我不明白为什么这个公式成立的原因.这比我想象的更有必要看一下这个计划.任何人都可以通过吹嘘这个帐户的内容来打击这个吗?

或者失败那是否有任何方法来跟踪每个逻辑读取中读取的页面,以便我可以自己解决?

SET STATISTICS IO OFF; SET NOCOUNT ON;

IF Object_id('tempdb..#Orders') IS NOT NULL
  DROP TABLE #Orders;

CREATE TABLE #Orders
  (
     OrderID    INT IDENTITY(1, 1) NOT NULL PRIMARY KEY CLUSTERED,
     CustomerID NCHAR(5) NULL,
     Freight    MONEY NULL,
  );

CREATE NONCLUSTERED INDEX ix
  ON #Orders (CustomerID)
  INCLUDE (Freight);

INSERT INTO #Orders
VALUES (N'ALFKI', 29.46), 
       (N'ALFKI', 61.02), 
       (N'ALFKI', 23.94), 
       (N'ANATR', 39.92), 
       (N'ANTON', 22.00);

SELECT PredictedWorktableLogicalReads = 
        1 + …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008

22
推荐指数
1
解决办法
2584
查看次数

获取单个查询中记录的计数百分比

参考这个问题:

在一列中获取项目及其值的计数

我如何在单个查询中获得记录计数的百分比,如下所示:

ItemId        count          Percent
------------------------------------
   1            2              33.3
   2            0                0
   3            1              16.6
   4            3              50.0            
Run Code Online (Sandbox Code Playgroud)

谢谢

sql sql-server sql-server-2008

7
推荐指数
1
解决办法
7452
查看次数

TSQL根据不同的字段计算各种%

我正在2012 MS-SQL服务器上运行,并且在其他字段中有一个包含Age,Gender的表USER,以及一个包含销售记录的SALES表.

我目前正在计算销售排行榜,显示由其销售人员订购的销售人员列表,以便举例说明此列表根据其最高销售额返回各种销售代表.在列表中间的某个地方,我们有托马斯先生,让我们说#4.

我目前的任务是展示Thomas与具有与他相同年龄的销售代表的比较,以及他与具有与他相同性别的销售代表的比较.计算将返回与上述整体列表不同的结果.

我理想的存储过程将收到1个参数(UserId)并返回以下单个记录值:OverallPosition,OverallPositionTotalCount,AgePosition,AgeTotalCount,GenderPosition,GenderTotalCount

数据样本:

CREATE TABLE dbo.User  
(    
   UserId int NOT NULL IDENTITY (1, 1),  
   Name nvarchar(50) NOT NULL,  
   Age int NULL,  
   Gender nvarchar(10) NULL  
)    

1, James, 30, 'male'  
2, Monica, 27, 'female'  
3, Paul, 30, 'male'  
4, Thomas, 30, 'male'  
5, Mike, 22, 'male'  
6, Sabrina, 30, 'female'  


CREATE TABLE dbo.Sales  
(  
   SalesId int NOT NULL IDENTITY (1, 1),  
   UserId int NOT NULL,  
   TotalSale int NOT NULL  
)  ON [PRIMARY]  

1, 1, $900,000  
2, 1, $1,000,000 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

7
推荐指数
1
解决办法
296
查看次数

标签 统计

sql ×3

sql-server ×3

sql-server-2008 ×2

t-sql ×1