SQL递归阵列



有没有办法通过范围迭代大量查询?如果不是,我将必须制作一个python脚本才能执行所有可能性。

我需要根据年龄和范围的薪水来计算平均的违约者...我只是用一个人做的,但是有没有办法一次进行整个查询?

age :[21,30],[31,40],[41,50],[51,60],[61,70],[71,80],[81,...]

薪水:[0,200],[201,500],[501,1000],[1001,1500],[1501,2000],[2001,2500],[2501,3000],[3001,3500],[3501,4000],[4001,5000],[5001,6000],[6001,10000],[10001,...]

我有一个适合年龄[30,40]和薪水[1500-2000]的查询。

SELECT 
 (COUNT(*) * 100)/ (SELECT 
                    COUNT(*) 
                   FROM Client
                   WHERE (Age BETWEEN 30 AND 40) 
                   AND (Salary BETWEEN 1500 AND 2000)) AS percentage
FROM Client
WHERE (Age BETWEEN 30 AND 40)
AND (Salary BETWEEN 1500 AND 2000)
AND Defaulter = 1
GROUP BY Defaulter

结果是:

Defaulters->             68
Clients  at range->     114
percentage->             59

有没有办法使所有这一切接一个地n次?

谢谢

编辑

CREATE TABLE Client
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255),
Salary int,
Age int,
Defaulter int
);

sql语言因服务器而异,所以我要离开答案psuedo。

创建2个参考表。

Table Ages as (age_display varchar(20),age_start_range int, age_end_range int).  
Table salaries as (sal_display varchar(20), sal_start_range int, sal_end_range int)

在您的加入语句中:

FROM Client c inner join ages a on c.age > age_start_range  and c.age < age_end_range
inner join salaries s on c.salary > sal_start_range and c.salary < sal_end_range 

现在,您可以在选择中的表中使用"显示"列,并按语句组进行组。

在不知道您的DB

的情况下,它的进展不多

创建一个具有最小和最大年龄列的列,另一个具有最低和最高薪水的表。这些可以是临时的或永久的表。用您的Client表交叉加入它们,并在查询中引用年龄和工资列,而不是您当前使用的硬编码值。

最新更新