我已经含有特定项目的ID和整个的一定时间内其相应的生产成本下表(只样品)(在这种情况下被省略) 查询和通过施加一个特定的滤波器
| id | cost|
|------|-----|
| 1667 | 20 |
| 2000 | 25 |
| 2000 | 30 |
| 1667 | 35 |
| 3244 | 500 |
| 3244 | 0 |
| 3244 | 25 |
| 3244 | 26 |
| 9999 | 56 |
| 3814 | 526 |
| 9999 | 699 |
| 3814 | 13 |
分组数据
我想提取每个特定ID的最大值,到目前为止我已经成功。输出看起来像这样:
| id | cost |
|------|-------|
| 2000 | 30 |
| 1667 | 35 |
| 3244 | 500 |
| 3814 | 526 |
| 9999 | 699 |
我使用的代码是:
SELECT *
FROM t1 WHERE (id,cost) IN
(SELECT id, max(cost)
FROM t1
GROUP BY id
)
不过,我想获得最大价值,因为有时成本为0或进入之前应用额外的过滤器数字太高。
- 首先,我想排除价格= 0的所有ID。
- 其次,我想排除高于特定ID的2x3rd四分位数的所有价格。
例如,如果我们把ID = 3244,过程是这样的:
| id | cost | | id | cost | | id | cost |
|------|-------| |------|-------| |------|-------|
| 3244 | 500| | 3244 | 500| | | |
| 3244 | 0| | | | | | |
| 3244 | 25| | 3244 | 25| | 3244 | 25|
| 3244 | 26| | 3244 | 26| | 3244 | 26|
我会得到ID = 3244将是26号,我想重复这个过程每个ID。
你能告诉什么是2x3rd四分位 – Shankar
通过声明** ID的第三四分位数**你的意思是一个'ID = 1234'第三四分位数将是'3' – RiggsFolly
@Shankar我的意思是,如果特定的行值比第三四分位数高两倍,我希望查询排除它,即id = 3244的第三四分位数是263(不包括0); 500> 263因此排除500. –