Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要帮助从SQL查询生成函数吗_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

需要帮助从SQL查询生成函数吗

需要帮助从SQL查询生成函数吗,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我对每个国家使用下面的查询。如何生成传递给它的每个国家的平均值的函数 -- pepsi drink database select avg(monthly_sales) from world_sales where product name like '%juice%' and country = 'germany' -- this can be japan, usa, china etc 但是,请注意,在性能方面,像这样的标量函数的使用是有限的(阅读:这对性能非常不利)。小心使用。它不能回答

我对每个国家使用下面的查询。如何生成传递给它的每个国家的平均值的函数

-- pepsi drink database
select avg(monthly_sales)
from world_sales
where product name like '%juice%'
and country = 'germany' -- this can be japan, usa, china etc

但是,请注意,在性能方面,像这样的标量函数的使用是有限的(阅读:这对性能非常不利)。小心使用。

它不能回答您的直接问题,但为什么不按国家分组呢

select avg(monthly_sales), country
from world_sales
where product name like '%juice%' group by country;

嗯,这不是我想要做的。当它返回一个不同于他最初想要的结果集时,这是一个好的点吗?我的想法是,也许他正在迭代几个国家并调用函数。这样就更容易在一次通话中按国家分组,而不是多次通话。只是指出一个替代方案。也许我们这里有XY问题,OP问他认为什么是解决方案。确保“product_name”和“country”列被索引。除了列的索引之外,还有什么方法可以提高性能?@David-sure-不要使用标量函数,除非你确定在查询中不会调用太多标量函数,说3到5排。Kaffee的查询向您展示了一种在外部查询中“为所有国家”执行此操作的方法,而无需使用标量函数。
select avg(monthly_sales), country
from world_sales
where product name like '%juice%' group by country;