目录

使用sequelize对mysql进行原生sql查询

目录

使用sequelize对mysql进行原生sql查询

import sequelize from “./conn/index.js”; // import Denglu from “./entity/denglu”; import fs from ‘fs’; import xlsx from ’node-xlsx’ const start = process.hrtime(); const { QueryTypes } = sequelize; // (async ()=>{ // let res = await sequelize.query(“select * from denglu “, {type: QueryTypes.SELECT } ) // console.log(res.length) // res.forEach(item => console.log(item)) // })() // let res = await sequelize.query(“select count() from denglu where cishu > 0 “, {type: QueryTypes.SELECT } ) // console.log(res) let names = await sequelize.query(“select distinct(name) from score1 “, { type: QueryTypes.SELECT }) // console.log(names) // const name = “学校办公室” // let str = “SELECT checked, COUNT() AS count FROM score1 where name =’"+ name+”’ GROUP BY checked " let a =[] const checkedMapping = { ‘优秀’: ‘youxiu’, ‘良好’: ’lianghao’, ‘一般’: ‘yiban’, ‘较差’: ‘buhege’ }; const fu = ( fenshu,unitName)=>{ const b = { name: unitName, youxiu: 0, // 优秀 lianghao: 0, // 良好 yiban: 0, // 一般 buhege: 0 // 不合格 } fenshu.forEach(s => { // 使用映射对象来获取正确的属性名 const propertyName = checkedMapping[s.checked]; // 如果属性名存在(即 s.checked 是一个有效的键),则更新 b 的对应属性 if (propertyName) { b[propertyName] = s.count; } // 注意:这里我们没有处理 s.checked 不在映射中的情况, // 因为根据代码逻辑,这应该是不可能的,除非数据有误。 // 如果需要处理这种情况,可以添加一个 else 分支来处理未知值。 }); a.push(b) } const fu2 = ( fenshu,fenshu2,unitName)=>{ const b = { name: unitName, youxiu: 0, // 优秀 lianghao: 0, // 良好 yiban: 0, // 一般 buhege: 0, x_youxiu:0, x_lianghao:0, x_yiban:0, x_buhege:0 } fenshu.forEach(s => { // 使用映射对象来获取正确的属性名 const propertyName = checkedMapping[s.checked]; // 如果属性名存在(即 s.checked 是一个有效的键),则更新 b 的对应属性 if (propertyName) { b[propertyName] = s.count; } // 注意:这里我们没有处理 s.checked 不在映射中的情况, // 因为根据代码逻辑,这应该是不可能的,除非数据有误。 // 如果需要处理这种情况,可以添加一个 else 分支来处理未知值。 }); fenshu2.forEach(s=>{ const propertyName = checkedMapping[s.checked]; if(propertyName){ b[‘x_’+propertyName]=s.count } }) a.push(b) } const excel01 = (list)=>{ let excelData = [] try{ //添加数据 var addInfo = {}; //名称 addInfo.name = “用户表”; //数据数组 addInfo.data = [ [“名称”, “优秀”, “良好”,“一般”, “较差”, “校级优秀”,“校级良好”,“校级一般”,“校级较差”], ]; list.forEach(item => addInfo.data.push([item.name, item.youxiu, item.lianghao, item.yiban, item.buhege, item.x_youxiu, item.x_lianghao,item.x_yiban, item.x_buhege ])) //添加数据 excelData.push(addInfo); // 写xlsx var buffer = xlsx.build(excelData); //写入数据 fs.writeFile(’./score1.xlsx’, buffer, function (err) { if (err) { throw err; } //输出日志 console.log(‘Write to xls has finished’); const [seconds, nanoseconds] = process.hrtime(start); const milliseconds = seconds * 1000 + nanoseconds / 1e6; console.log(运行时间: ${milliseconds.toFixed(2)} 毫秒); }); }catch(e){ //输出日志 console.log(“excel读取异常,error=%s”, e.stack) } } // for (const jk of names) { // console.log(“jk : “, jk.name ) // } (async () => { for (const obj of names) { let str = SELECT checked, COUNT(*) AS count FROM score1 WHERE name = '${obj.name}' and length(work_number) = 36 GROUP BY checked; let so = await sequelize.query(str, { type: sequelize.QueryTypes.SELECT }); let str2 = SELECT checked, COUNT(*) AS count FROM score1 WHERE name = '${obj.name}' and length(work_number) =28 GROUP BY checked; let so2 = await sequelize.query(str2 , {type: sequelize.QueryTypes.SELECT}); fu2(so,so2,obj.name); } // console.log(a.length) excel01(a) })(); // 初始化对象 b // const b = { // name: ‘学校办公室’, // youxiu: 0, // 优秀 // lianghao: 0, // 良好 // yiban: 0, // 一般 // buhege: 0 // 不合格 // }; // 创建一个映射对象来将 checked 值映射到 b 的属性 // so.forEach(s => { // // 使用映射对象来获取正确的属性名 // const propertyName = checkedMapping[s.checked]; // // 如果属性名存在(即 s.checked 是一个有效的键),则更新 b 的对应属性 // if (propertyName) { // b[propertyName] = s.count; // } // // 注意:这里我们没有处理 s.checked 不在映射中的情况, // // 因为根据代码逻辑,这应该是不可能的,除非数据有误。 // // 如果需要处理这种情况,可以添加一个 else 分支来处理未知值。 // }); // let b ={} // b.name= ‘学校办公室’ // b.lianghao = 0 // b.youxiu =0 // b.yiban =0 // b.buhege =0 // so.forEach( s => { // if(s.checked == ‘良好’){ // b.lianghao = s.count // }else if(s.checked == ‘优秀’){ // b.youxiu = s.count // }else if(s.checked == ‘一般’){ // b.yiban = s.count // }else if(s.checked == ‘不合格’){ // } // }) // console.log(b) // names.forEach(item => { // }) // let users; // (async () => { // console.log("^^^^^^^^^”) // users = await sequelize.query(“select * from users “, { type: QueryTypes.SELECT }) // console.log(users) // })() // async function test(){ // users = await sequelize.query(“select distinct(firstName) from users “, { type: QueryTypes.SELECT }) // } // test() // console.log(users) // console.log(“khjkhjklhj”)