我一直在尝试获取销售额最高的销售人员的所有销售额中员工的名字。
我尝试过这两种解决方案,但似乎都不起作用。
(P.S.如果这还不够,我会提供更多信息)
SELECT s.date, st.item, st.price, st.category, e.first_name as firstname, COUNT(*) AS allsales
FROM sales s INNER JOIN employees e ON s.employee = e.id
INNER JOIN stock_items st ON s.item = st.id
GROUP BY firstname ORDER BY s.date DESC LIMIT 1;
SELECT s.date, st.item, st.price, st.category, e.first_name as firstname, COUNT(*) AS allsales
FROM sales s INNER JOIN employees e ON s.employee = e.id
INNER JOIN (SELECT COUNT(*) AS allsales, e.first_name AS firstname,
FROM sales s INNER JOIN employees e ON s.employee = e.id
GROUP BY firstname ORDER BY allsales DESC LIMIT 1) as t ON e.first_name = t.firstname;
此查询首先找到销售额最高的员工,然后选择该员工的所有销售额
SELECT s.date, st.item, st.price, st.category, e.first_name as firstname
FROM sales s
INNER JOIN employees e ON s.employee = e.id
INNER JOIN stock_items st ON s.item = st.id
WHERE e.first_name = (
SELECT e.first_name
FROM sales s
INNER JOIN employees e ON s.employee = e.id
GROUP BY e.first_name
ORDER BY COUNT(*) DESC
LIMIT 1
);
假设每次销售都会产生
sales
中的一条记录:
SELECT e.id, e.first_name as firstname, COUNT(*) AS allsales FROM sales s
JOIN employees e ON s.employee = e.id
GROUP BY e.id, e.first_name
ORDER BY 3 DESC
这将返回员工 ID、名字和销售额。
使用 count(*) 等聚合函数时,必须在 group by 中包含所有非聚合选定列