我的问题是--->员工每次销售都会得到每笔总销售金额10%的佣金,找出到目前为止哪个员工获得的佣金更少,订单数量更少[参考Northwind数据库]
我创建一个列'com'来计算佣金百分比。
从MIN(count(employeeid))和max(com)
的订单中选择distinct(EmployeeID)当我运行sqlserver查询时,它显示错误,如
“在预期条件的上下文中指定的非布尔类型的表达式,靠近'和'。”
答案 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)