查找哪个条目在Mysql中出现最大时间

时间:2013-02-02 12:48:05

标签: mysql sql max derived-table

我有一张像这样的表T

ID | brand
2 | 100
2 | 300
2 | 300
1 | 100
1 | 200

我想找到哪个ID,品牌组合的ID超过50%。例如:这里的结果应该是

ID | brand
2 | 300

as(2,300)在ID 2中出现3次中的2次。在ID1中,两种组合都是50%,因此ID 1没有行。
现在我这样接近它:
首先,我找到了每个ID,品牌组合的数量:

(select id,brand,count(*) c from T group by id,brand) as F

然后我列出满足上述标准的所有ID

select ID from F group by ID having max(c)/count(*) > 0.5

它完美无缺,但问题是我无法获得相应的品牌,因为在上面的查询中,我给出了

select ID, brand ...

然后它总是给出表的第一品牌 这是sql fiddle

1 个答案:

答案 0 :(得分:3)

这是我的第一次尝试。

SELECT ID, BRAND
FROM
(
  SELECT t.ID, t.BRAND, s.TotalCount, 
          COUNT(*) * 1.0 / s.TotalCount Percentage
  FROM   T
         INNER JOIN
        (
          SELECT ID, COUNT(*) totalCOunt
          FROM   T
          GROUP  BY ID
        ) s ON T.ID = s.ID
  GROUP  BY ID, BRAND
  HAVING (COUNT(*) * 1.0 / s.TotalCount) > 0.5
) r