.groupBy("product_id","product_typename").agg(sum("productnum").as("sum")) .select("product_id","sum") .sort(col("sum").desc) 为什么不生成product_typename列
时间: 2023-07-24 22:14:48 浏览: 100
您好!根据您提供的代码片段,您使用了groupBy和agg操作来对"product_id"和"product_typename"进行分组,并使用sum函数计算"productnum"的总和,并将结果命名为"sum"列。然后,您使用select选择了"product_id"和"sum"两列,并使用sort进行降序排序。
根据您的描述,您的代码逻辑是正确的,应该生成"product_typename"列。但是,由于我无法看到完整的代码和输入数据,无法确定具体原因。可能是数据本身没有"product_typename"列,或者在处理过程中发生了其他操作导致该列被删除或更改。
请确保输入数据包含"product_typename"列,并且在groupBy之前没有进行任何删除或更改操作。如果问题仍然存在,请提供更多的代码和数据信息,以便我更好地帮助您解决问题。
相关问题
function getPagedList(contractId) { var contractId = body.param.ontractId; SELECT a.id, a.conract_id contractId, a.product_id productId, a.purchase_num purchaseNum, a.purchase_price purchasePrice, a.remark, b.product_name productName, b.spec_code specCode, c.type_name typeName, d.unit_code unitCode FROM mes214820519.wms_pur_list_214820519 a, mes214820519.wms_product_214820519 b, mes214820519.wms_product_class_214820519 c, mes214820519.wms_unit_code_214820519 d WHERE a.product_id=b.id AND b.product_class_id = c.id AND b.unit_code_id=d.id `; return db.pager(sql, {contractId: contractId}) } 这段代码的错误在哪
这段代码有两个错误:
1. 在第一行中声明了 `contractId`,但在 SQL 查询语句中使用了 `body.param.ontractId`,应该改为 `body.param.contractId`。
2. SQL 查询语句的末尾多了一个反引号,应该删除它。
正确的代码应该是:
```
function getPagedList(contractId) {
var contractId = body.param.contractId;
var sql = `
SELECT
a.id,
a.conract_id contractId,
a.product_id productId,
a.purchase_num purchaseNum,
a.purchase_price purchasePrice,
a.remark,
b.product_name productName,
b.spec_code specCode,
c.type_name typeName,
d.unit_code unitCode
FROM
mes214820519.wms_pur_list_214820519 a,
mes214820519.wms_product_214820519 b,
mes214820519.wms_product_class_214820519 c,
mes214820519.wms_unit_code_214820519 d
WHERE
a.product_id=b.id
AND b.product_class_id = c.id
AND b.unit_code_id=d.id`;
return db.pager(sql, {contractId: contractId})
}
```
function getPagedList(contractId) { var contractId = body.param.contractId; var sql = ` SELECT a.id, a.contract_id contractId, a.product_id productId, a.purchase_num purchaseNum, a.purchase_price purchasePrice, a.remark, b.product_name productName, b.spec_code specCode, c.type_name typeName, d.unitcode unitCode FROM mes214820519.wms_pur_list_214820519 a, mes214820519.wms_product_214820519 b, mes214820519.wms_product_class_214820519 c, mes214820519.wms_unit_code_214820519 d WHERE a.product_id=b.id AND b.product_class_id = c.id AND b.unit_code_id=d.id AND a.contract_id=#{contractId}`; return db.pager(sql, {contractId: contractId}) } 用JavaScript语言修改这段代码
function getPagedList(contractId) {
var sql = `SELECT
a.id,
a.contract_id as contractId,
a.product_id as productId,
a.purchase_num as purchaseNum,
a.purchase_price as purchasePrice,
a.remark,
b.product_name as productName,
b.spec_code as specCode,
c.type_name as typeName,
d.unitcode as unitCode
FROM
mes214820519.wms_pur_list_214820519 a
INNER JOIN mes214820519.wms_product_214820519 b
ON a.product_id = b.id
INNER JOIN mes214820519.wms_product_class_214820519 c
ON b.product_class_id = c.id
INNER JOIN mes214820519.wms_unit_code_214820519 d
ON b.unit_code_id = d.id
WHERE
a.contract_id = :contractId`;
return db.pager(sql, { contractId: contractId });
}
在修改后的代码中,我使用了ES6模板字符串来构建SQL语句,同时使用了INNER JOIN来连接多张表,使代码更加简洁易读。另外,我还使用了命名参数代替了原来的占位符,以提高代码的可读性和可维护性。
阅读全文