我试图查找在Oracle数据库的特定列中有多少次出现特定值。该列用于数十个表中,并且我将不得不多次运行查询,因此我不想单独查询每个表。我可以使用类似以下内容获取要搜索的表的列表:
Select table_name from all_tab_cols
join all_tables using (table_name)
where column_name = 'EmployeeId' and num_rows > 0
Run Code Online (Sandbox Code Playgroud)
下一步是遍历表名列表,并输出每个表中包含EmployeeId列中特定值的每个表。例如,输出可能类似于:
**Table Name Column_name # Rows for EmployeeId = '123456'**
Table 1 EmployeeId 1
Table 2 EmployeeId 12
etc.
Run Code Online (Sandbox Code Playgroud)
我不是开发人员,也没有在SQL脚本中使用游标的经验,因此,我们将不胜感激。
我正在尝试编写一个查询来返回所有销售额高于平均美元销售额的产品。相关的表和列是:
我可以编写获取每种产品的美元销售额的子查询,但我在将平均函数应用于该子查询时遇到问题。我尝试的所有操作都会返回语法错误。以下是我认为应该接近答案的内容:
select avg(sum) as avg_sales
from (
select sum(b.quantity * a.price) as total_sales
from products a, orderlines b
where a.prod_id = b.prod_id
group by a.prod_id
);
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我得到:
错误:FROM 中的子查询必须有别名。
我不明白这一点,但我是 Postgres 的新手。无论如何,添加别名给我:
select avg(totals) as avg_sales
from (
select sum(b.quantity * a.price) as total_sales
from products a, orderlines b
where a.prod_id = b.prod_id group by a.prod_id
) as totals;
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我得到: 错误:函数 avg(record) 不存在
我意识到上面的代码只是获取总体平均销售额。如果我能获得平均销售额,那么应该很容易获得高于平均水平的产品。