代码之家  ›  专栏  ›  技术社区  ›  Error 1004

前6位的SQL计数值

  •  0
  • Error 1004  · 技术社区  · 7 年前

    我试图创建一个SQL查询来计算在前6个选择中[Over]='Y'的次数,但我在合并查询中收到了一个错误。

     SELECT TOP 6 [Number]
      ,[Over]
      ,[Goal]
     FROM [Test_Hermes].[dbo].[Test]
     ORDER BY Number desc
    

    要计数的查询:

    SELECT COUNT([Over]) 
    FROM [dbo].[Test] 
    WHERE [OVER] = 'Y';
    

    SELECT COUNT([Over]) 
    FROM (SELECT TOP 6 [Number]
      ,[Over]
      ,[Goal]
    FROM [Test_Hermes].[dbo].[Test]
    ORDER BY Number desc) 
    WHERE [OVER] = 'Y';
    

    任何帮助都将不胜感激! 谢谢

    2 回复  |  直到 7 年前
        1
  •  1
  •   Bernd Buffen    7 年前

    请出示这个样品。

     SELECT
       [Number]
      ,[Over]
      ,[Goal]
      , SUM( If(OVER= 'Y',1,0)) AS CNT
     FROM [Test_Hermes].[dbo].[Test]
     ORDER BY Number desc
    LIMIT 1,6;
    
        2
  •  0
  •   Dillon_Su    7 年前

    不能在子查询中使用order by。

    SELECT COUNT([t1].[Over]) 
    FROM (SELECT TOP 6 [Number]
        ,[Over] 
        ,[Goal]
      FROM [Test_Hermes].[dbo].[Test]) as t1
    WHERE [OVER] = 'Y' ;
    

    SELECT COUNT([t1].[Over]) 
    FROM (SELECT ROW_NUMBER() OVER(PARTITION BY [Number] ORDER BY [Number] DESC) as 'Rank'
        ,[Number]
        ,[Over] 
        ,[Goal]
      FROM [Test_Hermes].[dbo].[Test]) as t1 
    
    WHERE [t1].[OVER] = 'Y' AND [t1].[Rank] <= 6;