获取其他数据的最大值

时间:2011-05-25 19:19:41

标签: sql group-by max

我必须来问这个,因为我已经生气,哭泣和一切,因为这真的杀了我。我讨厌SQL。但必须这样做。网站使用SQL。

我有这些表(缩写为必要的而不是真正的SQL):

CREATE TABLE deliverer(d_id INT PRIMARY KEY, name VARCHAR(80));
CREATE TABLE article(a_id INT PRIMATY KEY, brand VARCHAR(80));
CREATE TABLE delivers(d_id FOREIGN KEY(deliverer), a_id FOREIGN KEY(article));

我需要为每个brand deliverers提供最多文章的人SELECT brand, MAX(cnt) FROM (SELECT COUNT(a.a_id) AS cnt, a.brand, d.d_id, d.name FROM derliverer d, delivers l, article a WHERE a.a_id = l.a_id AND l.d_id = d.d_id GROUP BY a.brand, d.d_id, d.name) GROUP BY brand; 。经过两个小时的思维扭曲之后,我才走到这一步:

GROUP BY brand

我真的,真的,真的没有得到关于SQL的原因是它不让我SELECT d.name, d.d_id { {1}}。这真的没有意义。

在我跳出窗外之前请帮助我。

1 个答案:

答案 0 :(得分:0)

  

我真的,真的,真的没有得到关于SQL的原因是它不让我BY GROUP品牌和SELECT d.name,d.d_id。这真的没有意义。

因为如果这样做,计数将针对每个不同的d.name,d.d_id。这不是你想要的。

您肯定希望阅读一些tutorials有关群组的工作方式。

  

我需要为每个品牌提供最多文章的提供者。

在这种情况下,您需要以下内容:

select brand_id, count(*) as top_deliverer, deliverer_id, deliverer.etc.
from some stuff
group by brand_id, deliverer_id, deliverere.etc
order by top_deliverer desc