有没有办法通过范围迭代大量查询?如果不是,我将必须制作一个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
表交叉加入它们,并在查询中引用年龄和工资列,而不是您当前使用的硬编码值。