USE AdventureWorks2008R2;
GO
SELECT SalesOrderID, ProductID, OrderQty
    ,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Total'
    ,AVG(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Avg'
    ,COUNT(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Count'
    ,MIN(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Min'
    ,MAX(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Max'
FROM Sales.SalesOrderDetail 
WHERE SalesOrderID IN(43659,43664);
我读到了那个条款,我不明白为什么需要它.这个功能Over有什么作用?怎么Partitioning By办?为什么我不能写一个查询Group By SalesOrderID?
我有时会遇到很长的条款,我正在寻找一种允许我折叠它们的方法,就像我可以在默认情况下折叠类,方法和命名空间一样.
是否有Visual Studio扩展程序可以做到这一点?ReSharper和JustCode都没有允许它.
谢谢!
我正在编写一个存储过程,其中有一个名为my_size的输入参数,它是一个INTEGER.我希望能够LIMIT在SELECT声明中的子句中使用它.显然这是不支持的,有没有办法解决这个问题?
# I want something like:
SELECT * FROM some_table LIMIT my_size;
# Instead of hardcoding a permanent limit:
SELECT * FROM some_table LIMIT 100;
我在Visual Prolog中找不到任何关于"不等于"标志的文档.请提供此问题的正确解决方案:
class predicates
        sister : (string Person, string Sister) nondeterm(o,o).
    clauses
        sister(Person, Sister) :-
            Person [not-equal-sign] Sister,
            parent(Person, Parent),
            parent(Sister, Parent),
            woman(Sister).
我想知道多个.Where()语句是否存在性能影响.例如我可以写:
var contracts =  Context.Contract
    .Where(
        c1 =>
            c1.EmployeeId == employeeId
        )
    .Where(
        c1 =>
            !Context.Contract.Any(
                c2 =>
                    c2.EmployeeId == employeeId
                    && c1.StoreId == c2.StoreId
                    && SqlFunctions.DateDiff("day", c2.TerminationDate.Value, c1.DateOfHire.Value) == 1
                )
        )
    .Where(
        c1 =>
            !Context.EmployeeTask.Any(
                t =>
                    t.ContractId == c1.Id
                )
        );
或者我可以将它们全部组合到一个Where()子句中,如下所示:
var contracts =  Context.Contract
    .Where(
        c1 =>
            c1.EmployeeId == employeeId
            && !Context.Contract.Any(
                c2 =>
                    c2.EmployeeId == employeeId
                    && c1.StoreId == c2.StoreId
                    && SqlFunctions.DateDiff("day", c2.TerminationDate.Value, c1.DateOfHire.Value) == 1
                )
            && !Context.Employee_Task.Any(
                t =>
                    t.ContractId == c1.Id …我在then子句中有一个带循环的测试:
result.each {
  it.name.contains("foo")
  it.entity.subEntity == "bar"
}
for (String obj : result2) {
  obj.name.contains("foo")
  obj.entity.subEntity == "bar"
}
最近我意识到循环没有真正测试过.无论我是否有foo或bar或其他任何东西,测试总是绿色的:)我发现,循环必须以不同的方式进行测试,例如使用'every'?但只是将'each'更改为'every'抛出异常:
result.every {
  it.name.contains("foo")
  it.entity.subEntity == "bar"
}
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Spec expression: 1: expecting '}', found '==' @ line 1, column 61.
   s("foo") it.entity.rootEntity == "bar" }
我应该如何在测试中正确使用循环?我正在使用spock 0.7-groovy-2.0
我有一个如下的条款:
lock_open:-
        conditional_combination(X),
        equal(X,[8,6,5,3,6,9]),!,
        print(X).
这个条款成功了.但是我想知道在之前调用conditional_combination()的次数是多少次equal(X,[8,6,5,3,6,9]).该程序是通过遵循一些规则来生成排列.我需要生成多少个排列来获得像865369这样的特定值.
我无法获得WHERE IN子句来处理android SQLite数据库.
有没有办法在android中执行这样的语句?:
SELECT body FROM table1 WHERE title IN ('title1', 'title2', 'title3')
在此示例中使用guard子句的正确方法是什么?
def require_admin
  unless current_user && current_user.role == 'admin'
    flash[:error] = "You are not an admin"
    redirect_to root_path
  end        
end
尝试使用这些https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals约定重写时,我不知道在哪里放置flash消息
我想知道是否有任何明智的方法来重写以下查询,以便优化器使用列上的索引?
Create Procedure select_Proc1
    @Key1 int=0,
    @Key2 int=0
As
BEGIN
    Select key3
    From Or_Table
    Where (@key1 =0 OR Key1 =@Key1) AND
          (@key2 =0 OR Key2 =@Key2)
END
GO
即使WHERE子句中的列被索引覆盖,SQL Server也无法使用这些索引.这提出了一个问题,即是否有任何东西"阻止"索引的使用.这个问题的答案是肯定的 - 罪魁祸首是参数和"或"条件.索引不包含这些参数,这意味着SQL Server无法使用任何索引来评估"@ key1 = 0"(同样适用于@ key2 = 0的条件).实际上,这意味着SQL Server无法使用索引来评估子句"@ key1 = 0 OR Key1 = @ key1"(因为"OR"子句是两个条件所涵盖的行的并集).同样的原则也适用于其他条款(re.key2).这导致SQL Server得出结论,没有索引可用于提取行,使SQL Server能够利用下一个最佳方法 - 聚簇索引扫描
如您所见,如果WHERE子句中的谓词为"OR",则SQL优化器将不使用列上的索引.针对此问题的一种解决方案是使用IF子句为所有可能的参数组合分隔查询.
请阅读这篇简短的文章,以便更好地了解问题:http://www.sql-server-performance.com/articles/per/optimize_or_clause_p1.aspx
现在我的问题是,如果可能的组合只有三到四个,我们该怎么办?为每个组合编写单独的查询似乎不是一个合理的解决方案.这个问题还有其他解决方法吗?