Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
SQLite3通过错误地仅返回1行进行分组_Sql_Node.js_Sqlite_Group By - Fatal编程技术网

SQLite3通过错误地仅返回1行进行分组

SQLite3通过错误地仅返回1行进行分组,sql,node.js,sqlite,group-by,Sql,Node.js,Sqlite,Group By,我对node.js中的sqlite3有问题 我有大约5000行和3列的表:itemId、provider、price 我试图在itemId上分组,并在provider=“X”处获得平均价格 代码如下: var sql = "SELECT itemId, avg(price) from dataset where provider = ? group by ?"; db.each(sql, ["clerk", "itemId"], function (err, row) {

我对node.js中的sqlite3有问题

我有大约5000行和3列的表:itemId、provider、price

我试图在itemId上分组,并在provider=“X”处获得平均价格

代码如下:

var sql = "SELECT itemId, avg(price) from dataset where provider = ? group by ?";

db.each(sql, ["clerk", "itemId"],
    function (err, row) {
        if (err) throw err;
        console.log(row)
    },
    function (err, cntx) {
        if (err) throw err;
        console.log('Number of retrieved rows is ' + cntx);
    }); 
};
问题是该语句只返回where子句中第一个itemId的1行,但平均值是整个where子句的值。应该返回8行。当我这样做时:

select distinct(itemId) from dataset where provider = ? 
它返回8行


我尝试在itemId上使用distinct,并将itemId设置为整数和文本字段。两者都不起作用。

用于绑定值。这样使用时,实际上是按字符串
'itemId'
进行分组,而不是按
itemId
列进行分组。因为它是一个常量,所以所有行都有相同的值,结果得到一行

由于选择列表中有
itemId
,因此无法真正更改此值-使用任何其他列只会导致SQL查询失败,因此可以直接将其写入其中:

var sql = "SELECT itemId, avg(price) from dataset where provider = ? group by itemId";

哇!我工作太久了。谢谢你抓住了我的过失。作品