MS-SQL中,有表Table1,字段分别为id int, num integer。要求查询该表,按照id排序,查询sum(num)刚好大于给定参数的前n条记录明细。
时间: 2023-02-13 16:09:46 浏览: 43
你可以使用以下 SQL 语句来查询该表:
```
SELECT *
FROM (
SELECT *, SUM(num) OVER (ORDER BY id) as running_sum
FROM Table1
) t
WHERE running_sum > [given_parameter]
LIMIT n;
```
这将查询表中的所有记录,并按照 id 字段排序。然后使用 `SUM()` 函数和 `OVER()` 函数计算每条记录的 num 字段的总和。最后,使用子查询和 `WHERE` 子句筛选出所需的记录,并使用 `LIMIT` 子句限制查询的记录数。
请注意,在查询中使用的 `given_parameter` 应该替换为你想要使用的参数的值,`n` 应该替换为你想要查询的记录数。
相关问题
MS-SQL中,有表Table1,字段分别为id int, num integer。要求查询该表,按照id排序,查询sum(num)刚好大于给定参数的前n条记录。
在 MS-SQL 中,您可以使用如下查询来实现您的需求:
```
SELECT id, SUM(num) AS num_sum
FROM Table1
WHERE num_sum > @given_parameter
GROUP BY id
ORDER BY id ASC
LIMIT n
```
其中,@given_parameter 是给定的参数,n 是要查询的前 n 条记录。
查询中使用了 SUM 函数来统计字段 num 的总和,并使用 WHERE 子句来筛选 num_sum 大于给定参数的记录。然后使用 GROUP BY 子句将结果按照 id 分组,并使用 ORDER BY 子句将结果按照 id 升序排序。最后使用 LIMIT 子句来限制结果集的数量。
请注意,在 MS-SQL 中,LIMIT 子句是在 ORDER BY 子句之后执行的,因此如果要在 LIMIT 子句之前对结果集进行排序,需要使用 ORDER BY 子句。
mysql数据表TABLE_A中有字段id,parent_id,写出可以通过id查询数据层级的sql
SELECT t1.*, t2.parent_id as parent_parent_id, t3.parent_id as parent_parent_parent_id
FROM TABLE_A t1
LEFT JOIN TABLE_A t2 ON t1.parent_id = t2.id
LEFT JOIN TABLE_A t3 ON t2.parent_id = t3.id
WHERE t1.id = [输入的id];