Files
genome2025/backend/check-data5.js

48 lines
1.4 KiB
JavaScript

const { Client } = require('pg');
async function main() {
const conn = new Client({
host: 'localhost',
port: 5432,
user: 'postgres',
password: 'turbo123',
database: 'genome_db'
});
await conn.connect();
const farmNo = 1;
// 농가 내 모든 개체의 선발지수(가중 합계) 조회
const farmCowsResult = await conn.query(`
SELECT c.cow_id, SUM(gtd.trait_ebv) as sum_ebv
FROM tb_genome_request gr
JOIN tb_cow c ON gr.fk_cow_no = c.pk_cow_no
JOIN tb_genome_trait_detail gtd ON gtd.cow_id = c.cow_id AND gtd.del_dt IS NULL
WHERE gr.fk_farm_no = $1 AND gr.del_dt IS NULL AND c.del_dt IS NULL
AND gr.chip_sire_name = '일치'
GROUP BY c.cow_id
HAVING COUNT(*) = 35
ORDER BY sum_ebv DESC
`, [farmNo]);
const farmCows = farmCowsResult.rows;
console.log('=== 농가 1번 개체별 선발지수 (가중 합계) ===\n');
let total = 0;
farmCows.forEach((c, i) => {
const score = Number(c.sum_ebv);
total += score;
console.log(`${i+1}. ${c.cow_id}: ${score.toFixed(2)}`);
});
console.log('\n=== 계산 ===');
console.log('개체 수:', farmCows.length);
console.log('선발지수 총합:', total.toFixed(2));
console.log('농가 평균 = 총합 / 개체수 =', total.toFixed(2), '/', farmCows.length, '=', (total / farmCows.length).toFixed(2));
await conn.end();
}
main().catch(console.error);