SQLite3通过错误地仅返回1行进行分组
我对node.js中的sqlite3有问题 我有大约5000行和3列的表:itemId、provider、price 我试图在itemId上分组,并在provider=“X”处获得平均价格 代码如下: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) {
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";
哇!我工作太久了。谢谢你抓住了我的过失。作品