我有一个简单的表Customers
和fields id, name, rating, seller_id
。
查询结果
select seller_id, MAX(rating)
from Customer
group by seller_id
是按seller_id
分组的客户,其评分的最大值。像这样:
seller_id rating
2 17
3 20
4 17
如何修改此查询以另外获取客户的ID?如果我将id
添加到SELECT
我收到错误,我应该添加id
分组。但是我想只获得指定id的上面显示的值。有谁知道如何做到这一点?谢谢。
答案 0 :(得分:0)
试试这个
select c1.* from Customer c1 inner join
(select seller_id, MAX(rating) as rating from Customer
group by seller_id) c2 on c1.rating = c2.rating
或
SELECT c1.* FROM Customer b1 LEFT JOIN Customer c2
ON (b1.seller_id = b2.seller_id AND b1.rating > b2.br_created_date)
WHERE b2.rating is null;
答案 1 :(得分:0)
尝试:
select t.id, t.seller_id, t.rating
from Customer c
join (
select seller_id, MAX(rating) rating
from Customer
group by seller_id
) x
on x.seller_id = c.seller_id
and x.rating = c.rating
答案 2 :(得分:0)
SimarjeetSingh有一个很好的答案。再调整一下:
select c.customer_id, c.seller_id
from customer c
join (
select seller_id, max(rating) max_rating
from customer
group by seller_id
) s
on c.seller_id = s.seller_id
and c.rating = s.max_rating
这样您就可以比较seller_id和最高评分。
答案 3 :(得分:0)
数据集分为 使用GROUP BY子句的组。 分组属性很常见 每个小组成员共享的密钥。 分组属性通常是单个属性 列但可以是多列或 一个不能基于的表达式 小组职能。请注意,仅分组 属性和组功能是 使用时在SELECT子句中允许使用 GROUP BY。