我有两张桌子,尺寸和费用。我的查询对成本进行了大于比较的计数,并对不同的大小进行了计数。
表 1:尺寸 u
表 2:信用 t
这是我的查询:
select u.size as size
,count(u.size) * .4 as "40% of size"
,count(case when (t.cred * 12) > (t.inc *.3) then 1 结束)作为
来自 cred t 的 “30% 成本”, 在 t.id = u.id
group by u.size
上加入 size u
结果如下:
尺寸 | 尺寸的 40% | 30% 费用 |
---|---|---|
0 | 75.6 | 50 |
1 | 470.4 | 160 |
2 | 414.8 | 114 |
3 | 202.8 | 59 |
4 | 40 | 21 |
5 | 8.8 | 9 |
6 | 0.4 | 1 |
我希望查询在成本列大于大小列时显示“Y”,如果较小则显示“N”。这就是我正在寻找的结果:
尺寸 | 尺寸的 40% | 30% 费用 | 是/否 |
---|---|---|---|
0 | 75.6 | 50 | 氮 |
1 | 470.4 | 160 | 氮 |
2 | 414.8 | 114 | 氮 |
3 | 202.8 | 59 | 氮 |
4 | 40 | 21 | 氮 |
5 | 8.8 | 9 | 是 |
6 | 0.4 | 1 | 是 |
有没有办法展示这一点?我尝试使用以下内容,但我得到了这个:布尔值不能与非布尔值一起运算。
,case when ((t.cred * 12) > (t.inc * .3)) > (count(u.size) * .4) then 'Y' else 'N' 以“Y/N”结束
不确定如果我需要做子查询?
您可以使用子查询或 cte 来使其更具可读性,但您不必这样做。带子查询的版本:
没有子查询
您也许可以使用CTE来获得您想要的结果。
像这样的东西: