我可以在嵌套查询中使用 lower 吗?
Can I use lower on a nested query?
我已经有一段时间没用了 SQL 但又弄脏了我的手。我在尝试小写字符串列表时遇到错误。
我有两个查询想合并为一个,每个查询都独立运行:
select ticker from "General" g4 where industry = (select industry from "General" g3 where g3.ticker = 'IBM.US');
ticker
NSIT.US
SNX.US
NRILY.US
WIT.US
此 returns 基于代码变量行业的代码列表(在本例中为与 IBM 处于同一行业的所有公司)
那我想得到当年每家公司的平均收入:
select year, AVG(revenue) AS AVGrevenue from revenue r where lower(ticker) = lower('ibm.us') GROUP BY c.year;
works awesome:
2013 2750040.000000000000
2014 3675122.000000000000
2015 3455017.000000000000
2016 2140280.000000000000
2017 3401381.000000000000
但是当我组合它时,它不起作用:
SQL 查询执行期间发生错误
select year, AVG(revenue) AS AVGrevenue
from revenue r
where lower(ticker) = lower(
select ticker from "General" g4 where industry = (select industry from "General" g3 where g3.ticker = 'IBM.US')
)
GROUP BY r.year;
我收到这个错误:
Reason:
SQL Error [42601]: ERROR: syntax error at or near "select"
Position: 635
我做错了什么?
试试这个。你应该把 lower() 放在 select.
里面
select year, AVG(revenue) AS AVGrevenue
from revenue r
where lower(ticker) =
(
select lower(ticker) from "General" g4 where industry = (select industry from "General" g3 where g3.ticker = 'IBM.US')
)
GROUP BY r.year;
你 可以 ,但我建议将 lower()
移动到 查询中:
where lower(ticker) = (select lower(g4.ticker)
from "General" g4
where industry = (select industry from "General" g3 where g3.ticker = 'IBM.US')
)
如果您希望子查询成为 lower()
的参数,这也是允许的,您需要额外的括号级别:
where lower(ticker) = lower( (select g4.ticker
from "General" g4
where industry = (select industry from "General" g3 where g3.ticker = 'IBM.US')
)
)
一组括号用于函数调用。第二个是相关子查询。
我已经有一段时间没用了 SQL 但又弄脏了我的手。我在尝试小写字符串列表时遇到错误。
我有两个查询想合并为一个,每个查询都独立运行:
select ticker from "General" g4 where industry = (select industry from "General" g3 where g3.ticker = 'IBM.US');
ticker
NSIT.US
SNX.US
NRILY.US
WIT.US
此 returns 基于代码变量行业的代码列表(在本例中为与 IBM 处于同一行业的所有公司)
那我想得到当年每家公司的平均收入:
select year, AVG(revenue) AS AVGrevenue from revenue r where lower(ticker) = lower('ibm.us') GROUP BY c.year;
works awesome:
2013 2750040.000000000000
2014 3675122.000000000000
2015 3455017.000000000000
2016 2140280.000000000000
2017 3401381.000000000000
但是当我组合它时,它不起作用:
SQL 查询执行期间发生错误
select year, AVG(revenue) AS AVGrevenue
from revenue r
where lower(ticker) = lower(
select ticker from "General" g4 where industry = (select industry from "General" g3 where g3.ticker = 'IBM.US')
)
GROUP BY r.year;
我收到这个错误:
Reason:
SQL Error [42601]: ERROR: syntax error at or near "select"
Position: 635
我做错了什么?
试试这个。你应该把 lower() 放在 select.
里面select year, AVG(revenue) AS AVGrevenue
from revenue r
where lower(ticker) =
(
select lower(ticker) from "General" g4 where industry = (select industry from "General" g3 where g3.ticker = 'IBM.US')
)
GROUP BY r.year;
你 可以 ,但我建议将 lower()
移动到 查询中:
where lower(ticker) = (select lower(g4.ticker)
from "General" g4
where industry = (select industry from "General" g3 where g3.ticker = 'IBM.US')
)
如果您希望子查询成为 lower()
的参数,这也是允许的,您需要额外的括号级别:
where lower(ticker) = lower( (select g4.ticker
from "General" g4
where industry = (select industry from "General" g3 where g3.ticker = 'IBM.US')
)
)
一组括号用于函数调用。第二个是相关子查询。