我在node.js中的sqlite3有问题
我有大约5000行和3列的表格:itemId,provider,price
我正在尝试对itemId进行分组,并在提供者=“ X”的地方获取avg(price)。
代码如下:
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子句中具有第1个itemId的1行,但平均值是整个where子句的平均值。应该返回8行。当我这样做时:
select distinct(itemId) from dataset where provider = ?
它返回8行。
我尝试在itemId上使用distinct,并将itemId设置为INTEGER和TEXT字段。都不起作用。
答案 0 :(得分:1)
?
用于绑定值。像这样使用它时,实际上是按字符串'itemId'
分组,而不是按itemId
列分组。由于它是一个常数,因此所有行都具有相同的值,结果是一行。
由于选择列表中有itemId
,因此您无法真正更改此值-使用任何其他列都只会导致SQL查询失败,因此您可以在其中明确地编写它:>
var sql = "SELECT itemId, avg(price) from dataset where provider = ? group by itemId";