为什么以下代码显示错误?什么是备用?

时间:2014-04-23 05:35:44

标签: sql sql-server-2008 sql-server-2008-r2 northwind

我的问题是--->员工每次销售都会得到每笔总销售金额10%的佣金,找出到目前为止哪个员工获得的佣金更少,订单数量更少[参考Northwind数据库]

我创建一个列'com'来计算佣金百分比。

从MIN(count(employeeid))和max(com)

的订单中选择distinct(EmployeeID)

当我运行sqlserver查询时,它显示错误,如

“在预期条件的上下文中指定的非布尔类型的表达式,靠近'和'。”

1 个答案:

答案 0 :(得分:0)

您的查询存在多个问题。简而言之,您不能在不将其与其他表达式进行比较的情况下保留max()函数。您也无法在where子句中指定聚合函数:为此,您需要将它们包含在(select max()....)子查询中。但是出于您的目的,您需要在查询表上检查sum()和max(),您需要在以下内容中指定它们:

SELECT EmployeeID
FROM orders 
GROUP BY EmployeeID
HAVING SUM(debet)=
    (SELECT MAX (sum(com)) from orders GROUP BY EmployeeID)
AND COUNT(ledger_id)=
    (SELECT MIN(COUNT(EmployeeID)) FROM orders GROUP BY EmployeeID)