min()改进

时间:2012-11-04 20:33:19

标签: sql postgresql

这是我的数据库项目。

用户_

select id, name from user_;

 id |   name
----+----------
  1 | bartek
  2 | bartek_m
  3 | bartek_k
  4 | bartek_b

订单_

select id, employee_id, user_id from order_;

 id | employee_id | user_id
----+-------------+---------
  1 |           3 |       1
  2 |           4 |       1
  3 |           4 |       1
  4 |           4 |       1
  5 |           3 |       1

每个用户都有一个角色(我不在这里添加表role_但它存在)。 可以将具有角色员工的每个用户的ID分配给order_.employee_id 我需要获得最少订单数的用户

select a.id, min(a.count) from (
    select u.id, count(u.id) from user_ u, order_ o
    where u.id = o.employee_id
    group by u.id
) as a group by a.id, a.count

 id | min
----+-----
  4 |   3
  3 |   2

我认为我的查询错了。任何人都可以更改查询以返回  只有这个用户拥有最少订单数的ID?

1 个答案:

答案 0 :(得分:1)

SELECT u.id, count(*)
FROM user_ AS u JOIN order_ AS o ON (u.id=o.employee_id)
GROUP BY u.id
ORDER BY 2 LIMIT 1

(如果我读对你的话)?