标签: greatest-n-per-group

使用MAX和GROUP BY选择所有相应的字段

我有这张桌子:

替代文字

我想提出,将返回每个请求deal_id具有最高的行timestamp,并相应status_id.

所以对于这个例子,我会返回2行:

1226, 3, 2009-08-18 12:10:25
1227, 2, 2009-08-17 14:31:25
Run Code Online (Sandbox Code Playgroud)

我尝试用这个查询来做

SELECT deal_id, status_id, max(timestamp) FROM deal_status GROUP BY deal_id
Run Code Online (Sandbox Code Playgroud)

但它会回错status_id:

1226, 1, 2009-08-18 12:10:25
1227, 1, 2009-08-17 14:31:25
Run Code Online (Sandbox Code Playgroud)

mysql sql group-by max greatest-n-per-group

13
推荐指数
1
解决办法
1万
查看次数

如何为每个帐户的最后一笔交易进行SQL查询?

假设我有一个表"事务",其中包含"acct_id""trans_date"和"trans_type"列,我想过滤此表,以便我只拥有每个帐户的最后一笔交易.显然我可以做点什么

SELECT acct_id, max(trans_date) as trans_date  
FROM transactions GROUP BY acct_id;
Run Code Online (Sandbox Code Playgroud)

但后来我失去了我的trans_type.然后,我可以使用我的日期列表和帐户ID进行第二次SQL调用,然后返回我的trans_type,但这感觉很麻烦,因为它意味着要么来回发送数据到sql server,要么就是创建一个临时表.

有没有办法用一个查询来做到这一点,希望是一个可以与mysql,postgres,sql-server和oracle一起使用的泛型方法.

sql greatest-n-per-group

13
推荐指数
2
解决办法
4万
查看次数

PostgreSQL,从最大id中选择

通过在PG 9.1上使用libpq,我试图编写查询以从具有最高索引'my_id'的行获取值:

SELECT my_id, col2, col3 
FROM mytable 
WHERE my_id = MAX(my_id)
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

错误:WHERE子句中不允许聚合...

如何正确编写这样的查询?

sql postgresql greatest-n-per-group

13
推荐指数
3
解决办法
4万
查看次数

获得每个组的最佳结果(在Oracle中)

如何在oracle查询中获得几个组的N个结果.

例如,给出下表:

|--------+------------+------------|
| emp_id | name       | occupation |
|--------+------------+------------|
|      1 | John Smith | Accountant |
|      2 | Jane Doe   | Engineer   |
|      3 | Jack Black | Funnyman   |
|--------+------------+------------|
Run Code Online (Sandbox Code Playgroud)

还有更多行占用更多.我想从每个职业中找到三名员工(比方说).

有没有办法在不使用子查询的情况下执行此操作?

sql oracle greatest-n-per-group

12
推荐指数
2
解决办法
7万
查看次数

MYSQL连接中的嵌套Select语句

SELECT * FROM A
JOIN B
ON B.ID = A.ID
AND B.Time =   (SELECT max(Time) 
                            FROM B B2
                            WHERE B2.ID = B.ID)
Run Code Online (Sandbox Code Playgroud)

我试图在MYSQL中加入这两个表.不要注意,如果ID是唯一的,那么我不会尝试这样做.我浓缩了真实的解决方案来绘制简化的图片.我试图在特定记录的最大日期抓住并加入表B. 此过程由SSIS包运行,并且说B2.ID是未知列.我经常在MSSQL中做这样的事情并且是MYSQL的新手.任何人有任何指针或想法?

mysql nested join greatest-n-per-group

12
推荐指数
1
解决办法
2万
查看次数

如何从每组中选择TOP 5 PERCENT?

我有一个这样的样本表:

CREATE TABLE #TEMP(Category VARCHAR(100), Name VARCHAR(100))

INSERT INTO #TEMP VALUES('A', 'John')
INSERT INTO #TEMP VALUES('A', 'John')
INSERT INTO #TEMP VALUES('A', 'John')
INSERT INTO #TEMP VALUES('A', 'John')
INSERT INTO #TEMP VALUES('A', 'John')
INSERT INTO #TEMP VALUES('A', 'John')
INSERT INTO #TEMP VALUES('A', 'Adam')
INSERT INTO #TEMP VALUES('A', 'Adam')
INSERT INTO #TEMP VALUES('A', 'Adam')
INSERT INTO #TEMP VALUES('A', 'Adam')
INSERT INTO #TEMP VALUES('A', 'Lisa')
INSERT INTO #TEMP VALUES('A', 'Lisa')
INSERT INTO #TEMP VALUES('A', 'Bucky')
INSERT INTO #TEMP VALUES('B', 'Lily')
INSERT INTO #TEMP …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008 greatest-n-per-group

12
推荐指数
1
解决办法
2万
查看次数

从关系中选择最常见的值 - SQL语句

我的数据库中有一个表有很多记录,有些记录对其中一个列共享相同的值.例如

|  id  |  name  |  software  |
______________________________
|  1   |  john  |  photoshop |
|  2   |  paul  |  photoshop |
|  3   |  gary  |  textmate  |
|  4   |  ade   |  fireworks |
|  5   |  fred  |  textmate  |
|  6   |  bob   |  photoshop |
Run Code Online (Sandbox Code Playgroud)

我想通过使用SQL语句返回最常见的软件的价值.

因此,在上面的示例中,所需的SQL语句将返回"photoshop",因为它比任何其他软件都要多.

这可能吗?

感谢您的时间.

mysql sql greatest-n-per-group

11
推荐指数
1
解决办法
2万
查看次数

Oracle SQL - 分析功能超过一个组?

我的桌子:

ID   NUM   VAL
1    1     Hello
1    2     Goodbye
2    2     Hey
2    4     What's up?
3    5     See you
Run Code Online (Sandbox Code Playgroud)

如果我想返回每个ID的最大数量,它真的很干净:

SELECT MAX(NUM) FROM table GROUP BY (ID)
Run Code Online (Sandbox Code Playgroud)

但是,如果我想获取与每个ID的每个数字的最大值相关联的值,该怎么办?

为什么我不能这样做:

SELECT MAX(NUM) OVER (ORDER BY NUM) FROM table GROUP BY (ID) 
Run Code Online (Sandbox Code Playgroud)

为什么这是一个错误?我希望这个选择按ID分组,而不是为每个窗口单独分区...

编辑:错误是"不是GROUP BY表达式".

sql oracle greatest-n-per-group

11
推荐指数
1
解决办法
3万
查看次数

从oracle中为每个组选择最新行

我在留言簿中有一个包含用户评论的表格.列是:id,user_id,title,comment,timestamp.

我需要为每个用户选择最新的行.我已尝试使用group by但没有管理它,因为我无法在同一查询中选择其他任何我按user_id分组的内容:

SELECT user_id, MAX(ts) FROM comments GROUP BY user_id
Run Code Online (Sandbox Code Playgroud)

例如,在此查询中,我无法添加也选择列id,tilte和comment.如何才能做到这一点?

sql oracle greatest-n-per-group

11
推荐指数
2
解决办法
1万
查看次数

MYSQL查询 - 获取与帖子相关的最新评论

我正在尝试获取与我下载的每个帖子相关的最新1或2条评论,有点像instagram,因为它们显示每个帖子的最新3条评论,到目前为止我收到的帖子和喜欢的数量.

现在我需要做的就是弄清楚如何获得最新的评论,不太确定如何处理它,这就是为什么我希望有更多专业知识的人可以帮助我!

这是我目前的查询:

(SELECT
        P.uuid,
        P.caption,
        P.imageHeight,
        P.path,
        P.date,
        U.id,
        U.fullname,
        U.coverImage,
        U.bio,
        U.username,
        U.profileImage,
        coalesce(Activity.LikeCNT,0),
        Activity.CurrentUserLiked
        FROM USERS AS U
        INNER JOIN Posts AS P 
        ON P.id = U.id
        LEFT JOIN (SELECT COUNT(DISTINCT Activity.uuidPost) LikeCNT, Activity.uuidPost, Activity.id, sum(CASE WHEN Activity.id = $id then 1 else 0 end) as CurrentUserLiked
        FROM Activity Activity
        WHERE type = 'like' 
        GROUP BY Activity.uuidPost) Activity
        ON Activity.uuidPost = P.uuid
        AND Activity.id = U.id
        WHERE U.id = $id)
UNION
        (SELECT 
        P.uuid,
        P.caption,
        P.imageHeight,
        P.path,
        P.date, …
Run Code Online (Sandbox Code Playgroud)

php mysql sql greatest-n-per-group

10
推荐指数
1
解决办法
1102
查看次数