【问题标题】:Least frequent in SQL [duplicate]SQL中最不常见的[重复]
【发布时间】:2019-01-14 05:25:53
【问题描述】:

我做了一个表格,其中包含:

 sid| bid |date
 ---+-----+---------
 31 | 102 |2002-05-09
 31 | 103 |2002-05-09
 31 | 104 |2002-09-22
 22 | 101 |2002-10-10
 22 | 102 |2002-10-10
 22 | 103 |2003-01-10
 64 | 101 |2003-01-11
 64 | 102 |2003-01-11
 22 | 104 |2003-02-10
 74 | 103 |2003-02-12

我想显示频率较低的 id,即 101104。我发现了如何让最频繁,但如何拍摄最不频繁?

【问题讨论】:

  • 你最常吃什么?什么 MySQL 版本?
  • @SanSolo 这不是该链接的重复,因为 OP 需要两个 id 值 101 和 104(不仅仅是 1 行通过排序和限制 1),它们是 RANK()DENSE_RANK() 函数(在其他 dbms 中)。 MySql 将有一些解决方法来实现这一点。

标签: mysql sql


【解决方案1】:

也许我可以做一些更优化的事情,但这里是

CREATE TABLE work (sid int,bid int,`date` datetime);

INSERT INTO work (sid,bid,date)
VALUES
(31,102,'2002-05-09'),
(31,103,'2002-05-09'),
(31,104,'2002-09-22'),
(22,101,'2002-10-10'),
(22,102,'2002-10-10'),
(22,103,'2003-01-10'),
(64,101,'2003-01-11'),
(64,102,'2003-01-11'),
(22,104,'2003-02-10'),
(74,103,'2003-02-12');


SELECT @min :=MIN(nr) FROM 
(SELECT bid,count(*) as nr FROM work GROUP BY bid) a;

SELECT @min;


SELECT bid FROM (
SELECT bid,count(*) as nr FROM work GROUP BY bid HAVING count(*)=@min) a;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2014-08-04
    • 2012-06-21
    相关资源
    最近更新 更多