2014-10-17 97 views
0

我有瀏覽器的表「名稱」 S &「版本」 STSQL - 選擇前10顯示其餘部分「其他」

Name Version 
Safari 5.1 
Safari 4.0 
IE  5.0 
IEMob 9.0 

我正在寫一個查詢返回十大最常見的瀏覽器允許和標記任何額外的瀏覽器爲'其他'

這是我的存儲過程到目前爲止,它返回前10名瀏覽器像我想要的並創建一個'其他'行,但沒有填充它。

ALTER PROCEDURE [dbo].[GetUncommonBrowserCount] 
    @StartDate datetime = NULL, 
    @EndDate datetime = NULL, 
    @Domain varchar(255) = NULL 
AS 
BEGIN 

    SET NOCOUNT ON; 

UPDATE dbo.Browsers SET [Name] = 'IE' WHERE [Name] = 'InternetExplorer' 

SELECT Name, Count, [Version] FROM 
(
    SELECT TOP 10 
     Name, 
     COUNT(Name) AS [Count], 
     [Version] 
    FROM 
     dbo.GetCommonBrowserAccessEvents 
    WHERE 
     NOT 
     ( 
      Name = 'Chrome' OR [Name] = 'Firefox' OR Name = 'IE' AND CAST(SUBSTRING([Version], 1, CHARINDEX('.', [Version]) - 1) AS INT) > 7 
     ) 
     AND 
     (
      @StartDate IS NULL OR [Date] > @StartDate 
     ) 
     AND 
     (
      @EndDate IS NULL OR [Date] < @EndDate 
     ) 
     AND 
     (
      @Domain IS NULL OR DomainName = @Domain 
     ) 
     GROUP BY 
      Name, 
      [Version] 
     ORDER BY 
      COUNT(Name) DESC 
) AS A1 

    UNION ALL 

    SELECT 
     'Other' AS Name, 
     COUNT(Name) AS [Count], 
     [Version] = NULL 
    FROM 
     dbo.GetCommonBrowserAccessEvents 
    WHERE 
     Name NOT IN (SELECT TOP 10 
      Name 
     FROM 
      dbo.GetCommonBrowserAccessEvents 
     GROUP BY 
      Name 
     ORDER BY 
      COUNT(Name) DESC) 
    END 

如果你能看到我做錯了什麼,以及如何解決它,請告訴。這些是我從一張大桌子上得到的結果。其他的null版本是有意爲之的,因爲我正在用這些數據製作餅圖,並且希望將「Other」作爲單個切片。

Name Count Version 
Safari 46 5.1 
Mozilla 18 0.0 
Safari 16 5.0 
IE  12 7.0 
Safari 12 0.0 
Safari 9 6.0 
IEMob 8 9.0 
IEMob 8 10.0 
IE  8 6.0 
IE  1 3.2A 
Other 0 NULL 
+0

你能張貼你得到 – christiandev 2014-10-17 08:22:58

回答

1

嘗試改變

 GROUP BY 
     Name 

 GROUP BY 
     Name, 
     [Version] 

在聯盟的第二部分中的所有

+0

嗯,這是很容易的結果,它現在爲「其他」返回一個值。 – OrbitalFriendshipCannon 2014-10-17 08:36:37

相關問題