小编1ea*_*dog的帖子

如何遍历PLSQL Select的结果

我试图查找在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脚本中使用游标的经验,因此,我们将不胜感激。

sql plsql loops

5
推荐指数
1
解决办法
6637
查看次数

Postgres SQL 计算计算总数的平均值

我正在尝试编写一个查询来返回所有销售额高于平均美元销售额的产品。相关的表和列是:

  • 产品:prod_id:整数,价格:小数
  • 订单行:prod_id:整数,数量:整数

我可以编写获取每种产品的美元销售额的子查询,但我在将平均函数应用于该子查询时遇到问题。我尝试的所有操作都会返回语法错误。以下是我认为应该接近答案的内容:

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) 不存在

我意识到上面的代码只是获取总体平均销售额。如果我能获得平均销售额,那么应该很容易获得高于平均水平的产品。

sql postgresql

1
推荐指数
1
解决办法
7787
查看次数

标签 统计

sql ×2

loops ×1

plsql ×1

postgresql ×1