gpt4 book ai didi

sql - 困难的 SQL 子查询来计算一些东西

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:52 25 4
gpt4 key购买 nike

我正在开发一个 jQuery 移动应用程序,因此我需要对我的数据库中的某些内容进行计数。我花了好几个小时问了一些同学,但没有用。

数据库:带有子查询的 PostgreSQL

例如:我的一个子查询的结构:

app.get('/getNumber', function(req, res) {
getFromDB("SELECT COUNT(p.*) AS rooms
FROM park_rooms p
WHERE p.park_house_id = " + req.param("house"), req, res)
})

问题来了:

enter image description here

Larger description image: klick


我需要的:

我想用 park_house_id = 0 count 表分类中的所有 result=0

但是:只有park_room_id具有最高帧并且没有多个park_room_id

有没有一些数据库专家可以告诉我一个子查询来解决这个问题?

最佳答案

首先,我们需要来自 classification 的属于 park_house_id = 1 的行,所以我们要做的是将 classificationpark_room 进行内连接 如果此条件为真,请使用:

 SELECT *
FROM park_room pr
INNER JOIN classification c ON c.park_room_id = pr.id
WHERE pr.park_house_id = 1

现在,对于我们想要找出最大帧数的每个 park_room_id,我们通过使用 MAX() 函数和 GROUP BY park_room 来实现。 id 或者在我们的例子中,我们将 park_room 别名为 pr 所以 GROUP BY pr.id。我们将最大帧数别名为 maxframe

 SELECT pr.id,max(c.frame) as maxframe
FROM park_room pr
INNER JOIN classification c ON c.park_room_id = pr.id
WHERE pr.park_house_id = 1
GROUP BY pr.id

最后,我们要计算 classification 中具有此 maxframe 数字的行作为每个 park_room_idframe > 和零 (0) 的 result。因此,我们将上述结果与 classification 内部连接起来,以检查是否 result = 0 并简单地计算满足此条件的 park_room_id(s)。所以我们的最终查询是。 (注意上面的查询现在是一个子查询,用于在我们的最终查询中生成别名为 maxframe 的表)。

SELECT COUNT(park_room_id)
FROM classification c
INNER JOIN
(SELECT pr.id,max(c.frame) as maxframe
FROM park_room pr
INNER JOIN classification c ON c.park_room_id = pr.id
WHERE pr.park_house_id = 1
GROUP BY pr.id)as maxframe
ON c.park_room_id = maxframe.id AND frame=maxframe.maxframe
WHERE result = 0

请试试这个sqlFiddle

关于sql - 困难的 SQL 子查询来计算一些东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21070785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com