SQL帮助,获取所需的输出
输入: 所需输出: +---------+---------+--------+ | row_min | row_max | tCount | +---------+---------+--------+ | 2 | 4 | 1 | | 7 | 10 | 2 | | 13 | 14 | 3 | +---------+---------+--------+ row_min和row_max在输出中展开,相应的t计数在其范围内 这一步是数据转换的一部分,我需要使用驻留在AmazonRedshift中的SQL数据在数据集上执行。我被困在这一步上。SQL帮助,获取所需的输出,sql,amazon-redshift,Sql,Amazon Redshift,输入: 所需输出: +---------+---------+--------+ | row_min | row_max | tCount | +---------+---------+--------+ | 2 | 4 | 1 | | 7 | 10 | 2 | | 13 | 14 | 3 | +---------+---------+--------+ row_min和row_max在输出中展开,相
请提供相同操作所需的SQL代码,希望仅限于使用联接和分析函数。您可以使用一个足够大的计数表来完成此操作,该计数表包含的数字高达表的MAXrow\u max: +-----+--------+ | row | tcount | +-----+--------+ | 2 | 1 | | 3 | 1 | | 4 | 1 | | 7 | 2 | | 8 | 2 | | 9 | 2 | | 10 | 2 | | 13 | 3 | | 14 | 3 | +-----+--------+ 我认为红移支持简单的、非递归的CTE,所以上面的方法应该可以工作
此输出背后是否存在任何逻辑?@suslov row_min和row_max在输出中展开,相应的tCount在其范围内。这不是代码编写服务。到目前为止,您在生成数字序列方面做了哪些尝试?请转到mysql的循环和重复部分。我希望你能找到答案solution@MdJohirulIslam在SQL中,使用数字表而不是循环是正常的,因为SQL是声明性的,而不是过程性的:。
WITH Tally AS (
SELECT ROW_NUMBER() OVER() AS n
FROM (
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 ) x(n)
CROSS JOIN (
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 ) y(n)
)
SELECT n, tCount
FROM Tally AS t
INNER JOIN mytable AS m ON t.n >= m.row_min AND t.n <= m.row_max