var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app).listen(80);
var mysql = require('mysql');

var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({limit: '50mb', extended: false}));
app.use(bodyParser.json({limit: '50mb'}));

var connection = mysql.createConnection({
	host: 'localhost'
	, port: 3306
	, user: 'root'
	, password: 'root'
	, database: 'test'
});

app.get('/', function (req, res) {
  res.sendfile("main.html");
});
app.get('/main', function (req, res) {
  res.sendfile("main.html");
});
app.get('/insertAircraftPage', function (req, res) {
  res.sendfile("insertAircraft.html");
});
app.get('/insertFlightPage', function (req, res) {
  res.sendfile("insertFlight.html");
});


app.get('/flight', function (req, res) {
	var q = `	select * from flight f, aircraft a where f.aircraftCode = a.aircraftCode;`;
	connection.query(q,
		function (err, rows, fields) {
			if (err) throw err;
			res.send(rows);
		}
	);
});

app.post('/flight', function (req, res) {
	var flightName = req.body.flightName;
	var aircraftCode = req.body.aircraftCode;
	var departure = req.body.departure;
	var arrival = req.body.arrival;
	var departTime = req.body.departTime;
	var arriveTime = req.body.arriveTime;

	var q = `insert into flight (flightName, aircraftCode, departure, arrival, departTime, arriveTime)
	values
	("${flightName}", "${aircraftCode}", "${departure}", "${arrival}", "${departTime}", "${arriveTime}");`;
  connection.query(q,
    function (err, rows, fields) {
      if (err) throw err;
      res.send(rows);
    }
  );


});

app.get('/aircraft', function (req, res) {
	var q = `select aircraftCode, aircraftName from aircraft;`;
	connection.query(q,
		function (err, rows, fields) {
			if (err) throw err;
			res.send(rows);
		}
	);
});

app.post('/aircraft', function (req, res) {
	var aircraftCode = req.body.aircraftCode;
	var aircraftName = req.body.aircraftName;
	var seats = req.body.seats;

	var q = `insert into aircraft (aircraftCode, aircraftName, seats) values ("${aircraftCode}", "${aircraftName}", ${seats});`;
  connection.query(q,
    function (err, rows, fields) {
      if (err) throw err;
      res.send(rows);
    }
  );
});


	// var q = `;`;
	// connection.query(q,
	// 	function (err, rows, fields) {
	// 		if (err) throw err;
	// 		res.send(rows);
	// 	}
	// );

 

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    항공코드 <input type="text" id="aircraftCode"><br>
    항공기명 <input type="text" id="aircraftName"><br>
    좌석수 <input type="text" id="seats"><br>
    <input type="button" value="항공기 입력" id="insertAircraftBtn">
    <input type="button" value="메인으로" id="backToMainBtn">
  </body>

  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script type="text/javascript">

    $("#insertAircraftBtn").click(function(){
      $.ajax({
        url:'/aircraft',
        type:"POST",
        data:{
          aircraftCode: $("#aircraftCode").val(),
          aircraftName: $("#aircraftName").val(),
          seats: $("#seats").val(),
        },
        success:function(res){
          alert("항공기 정보가 입력되었습니다.");
          location.href = "/";
        }
      });
    });

    $("#backToMainBtn").click(function(){
      location.href = "/";
    });
  </script>
</html>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    편명<input type="text" id="flightName"><br>
    항공기명 <select id="aircraftCode">
    </select><br>
    출발지<input type="text" id="departure"><br>
    목적지<input type="text" id="arrival"><br>
    출발시각<input type="text" id="departTime"><br>
    도착시각<input type="text" id="arriveTime"><br>
    <input type="button" value="운항 입력" id="insertFlightBtn">
    <input type="button" value="메인으로" id="backToMainBtn">
  </body>

  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script type="text/javascript">
    $.ajax({
      url:'/aircraft',
      data:{
      },
      success:function(res){
        for(var i=0;i<res.length;i++) {
          var aircraft = res[i];
          $("#aircraftCode").append(`<option value="${aircraft.aircraftCode}">${aircraft.aircraftName}</option>`)
        }
      }
    });

    $("#insertFlightBtn").click(function(){
      $.ajax({
        url:'/flight',
        type:"POST",
        data:{
          flightName: $("#flightName").val(),
          aircraftCode: $("#aircraftCode").val(),
          departure: $("#departure").val(),
          arrival: $("#arrival").val(),
          departTime: $("#departTime").val(),
          arriveTime: $("#arriveTime").val(),
        },
        success:function(res){
          alert("운항편이 입력되었습니다.");
          location.href = "/";
        }
      });

    });

    $("#backToMainBtn").click(function(){
      location.href = "/";
    });

  </script>
</html>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <div id="flightArea"></div>
    <br>
    <input type="button" value="항공기 입력" id="goToInsertAircraftPage">
    <input type="button" value="운항 입력" id="goToInsertFlightPage">
  </body>

  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script type="text/javascript">
    $.ajax({
      url:'/flight',
      data:{
      },
      success:function(res){
        console.log(res);
        $("#flightArea").append(`편명 / 항공기명 / 좌석수 / 출발지 / 목적지 / 출발시각 / 도착시각<br><br>`)
        for(var i=0;i<res.length;i++) {
          var flight = res[i];
          $("#flightArea").append(`${flight.flightName} / ${flight.aircraftName} / ${flight.seats} / ${flight.departure} / ${flight.arrival} / ${flight.departTime} / ${flight.arriveTime} <br>`)
        }
      }
    });

    $("#goToInsertAircraftPage").click(function(){
      location.href = "/insertAircraftPage";
    });

    $("#goToInsertFlightPage").click(function(){
      location.href = "/insertFlightPage";
    });
  </script>
</html>

 

1. AJAX calcForm 연습하기 (ajax를 이용한 계산기)

2. AJAX 가격을 입력 후 구입 확인 버튼을 누르면 구입 가능한 물품 중 가장 비싼
   물품을 보내준다. 가격이 너무 적으면 구입 불가 라는 메세지를 보내준다.

3. 서버에서 현대(1400), 기아(1300), 쌍용(1500), 벤츠(3500), BMW(3200)
   빨강(100), 파랑(120), 초록(200), 노랑(130), 검정(80)
   차종, 색상의 합계를 응답으로 전송하여 화면에 가격을 출력하세요.

4. 함수 사용하기.
   3개의 수를 입력 받아 가장 큰 수 구하기.

 

1. app.js

var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app).listen(81);

// 1. AJAX calcForm 연습하기
app.get('/Review1Ajax', function (req, res) {
  res.sendfile("calcForm.html");
});
app.get('/QuerySum', function (req, res) {
  console.log(req.query);
  var num1 = Number(req.query.num1);
  var num2 = Number(req.query.num2);
  res.send(`${num1} + ${num2} = ${num1 + num2}`);
});
app.get('/QuerySubtraction', function (req, res) {
  console.log(req.query);
  var num1 = Number(req.query.num1);
  var num2 = Number(req.query.num2);
  res.send(`${num1} - ${num2} = ${num1 - num2}`);
});
app.get('/QueryMultiply', function (req, res) {
  console.log(req.query);
  var num1 = Number(req.query.num1);
  var num2 = Number(req.query.num2);
  res.send(`${num1} x ${num2} = ${num1 * num2}`);
});
app.get('/QueryDivision', function (req, res) {
  console.log(req.query);
  var num1 = Number(req.query.num1);
  var num2 = Number(req.query.num2);
  res.send(`${num1} ÷ ${num2} = ${num1 / num2}`);
});
app.get('/QueryQuotient', function (req, res) {
  console.log(req.query);
  var num1 = Number(req.query.num1);
  var num2 = Number(req.query.num2);
  res.send(`${num1}을 ${num2}로 나눈 몫은 : ${parseInt(num1 / num2)}`);
});
app.get('/QueryRemainder', function (req, res) {
  console.log(req.query);
  var num1 = Number(req.query.num1);
  var num2 = Number(req.query.num2);
  res.send(`${num1}을 ${num2}로 나눈 나머지는 : ${num1 % num2}`);
});
app.get('/QuerySquare', function (req, res) {
  console.log(req.query);
  var num1 = Number(req.query.num1);
  var num2 = Number(req.query.num2);
  res.send(`${num1}^${num2} = ${Math.pow(num1,num2)}`);
});



// 2. AJAX 가격을 입력 후 구입 확인 버튼을 누르면 구입 가능한 물품 중 가장 비싼
// 물품을 보내준다. 가격이 너무 적으면 구입 불가 라는 메세지를 보내준다.
app.get('/Study1Ajax', function (req, res) {
  res.sendfile("Study1Ajax.html");
});
app.get('/QueryStore', function (req, res) {
  // var money = Number(req.query.money);
  // let priceArray = [1000,5000,10000,30000,50000,100000,500000];
  // var result;
  //
  // var priceLastIndex = priceArray.length - 1;
  // for (var i = priceLastIndex; i >= 0; i--) {
  //   console.log(i, money,  priceArray[i])
  //   if (money >= priceArray[i]) {
  //     result = "item" + String(i+1);
  //     break;
  //   } else {
  //     result = "구입 불가";
  //   }
  // }

  // 리스트 안에 딕셔너리!!!!
  var money = Number(req.query.money);
  var items = [
    {name: "item1", price: 1000},
    {name: "item2", price: 5000},
    {name: "item3", price: 10000},
    {name: "item4", price: 30000},
    {name: "item5", price: 50000},
    {name: "item6", price: 10000},
    {name: "item7", price: 50000},
  ];
  var result = "구입 불가";
  for (var i = 0; i < items.length; i++) {
    var eachItem = items[i];
    if (money > eachItem.price) {
      result = eachItem.name;
    } else {
      break;
    }
  }

  res.send(`${result}`);

});



// 3. 서버에서 현대(1400), 기아(1300), 쌍용(1500), 벤츠(3500), BMW(3200)
// 빨강(100), 파랑(120), 초록(200), 노랑(130), 검정(80)
// 차종, 색상의 합계를 응답으로 전송하여 화면에 가격을 출력하세요.
app.get('/carPrice', function (req, res) {
  res.sendfile("carPrice.html");
});
app.get('/calcCarPrice', function (req, res) {
  // 방법 1. select 박스의 value 값을 넘겨 받기
  // var num1 = Number(req.query.manufac);
  // var num2 = Number(req.query.color);

  // 방법 2. 프론트엔드에는 정보가 없고 백엔드에서 가격 DB를 소유한 상태에서 계산하기
  var manufac = req.query.manufac;
  var color = req.query.color;

  manufacDict = {"현대":1400,"기아":1300,"쌍용":1500,"벤츠":3500,"BMW":3200};
  colorDict = {"빨강":100,"파랑":120,"초록":200,"노랑":130,"검정":80};

  var manufacPrice = manufacDict[manufac];
  var colorPrice = colorDict[color];

  res.send(`${(manufacPrice + colorPrice)} 만원`);
});

console.log("server is running...")

 

2. calcForm.html (http://localhost:81/Review1Ajax)

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <input type="text" placeholder="num1을 입력" id="num1">
    <input type="text" placeholder="num2를 입력" id="num2">
    <br><br>
    <input type="button" value="덧셈" id="sumBnt"></button>
    <input type="button" value="뺄셈" id="subtractionBnt"></button>
    <input type="button" value="곱셈" id="multiplyBnt"></button>
    <input type="button" value="나누기" id="divisionBnt"></button>
    <input type="button" value="몫" id="quotientBnt"></button>
    <input type="button" value="나머지" id="remainderBnt"></button>
    <input type="button" value="제곱" id="squareBnt"></button>

    <span id="result"></span>

  </body>
  <script  src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script>
    $('#sumBnt').click(function() {
      $.ajax({
        url : 'http://localhost:80/QuerySum',
        data : {
          num1 : $('#num1').val(),
          num2 : $('#num2').val()
        },
        success : function(response) {
          $('#result').append("<br>" + response);
        }
      });
    });
    $('#subtractionBnt').click(function() {
      $.ajax({
        url : 'http://localhost:80/QuerySubtraction',
        data : {
          num1 : $('#num1').val(),
          num2 : $('#num2').val()
        },
        success : function(response) {
          $('#result').append("<br>" + response);
        }
      });
    });
    $('#multiplyBnt').click(function() {
      $.ajax({
        url : 'http://localhost:80/QueryMultiply',
        data : {
          num1 : $('#num1').val(),
          num2 : $('#num2').val()
        },
        success : function(response) {
          $('#result').append("<br>" + response);
        }
      });
    });
    $('#divisionBnt').click(function() {
      $.ajax({
        url : 'http://localhost:80/QueryDivision',
        data : {
          num1 : $('#num1').val(),
          num2 : $('#num2').val()
        },
        success : function(response) {
          $('#result').append("<br>" + response);
        }
      });
    });
    $('#quotientBnt').click(function() {
      $.ajax({
        url : 'http://localhost:80/QueryQuotient',
        data : {
          num1 : $('#num1').val(),
          num2 : $('#num2').val()
        },
        success : function(response) {
          $('#result').append("<br>" + response);
        }
      });
    });
    $('#remainderBnt').click(function() {
      $.ajax({
        url : 'http://localhost:80/QueryRemainder',
        data : {
          num1 : $('#num1').val(),
          num2 : $('#num2').val()
        },
        success : function(response) {
          $('#result').append("<br>" + response);
        }
      });
    });
    $('#squareBnt').click(function() {
      $.ajax({
        url : 'http://localhost:80/QuerySquare',
        data : {
          num1 : $('#num1').val(),
          num2 : $('#num2').val()
        },
        success : function(response) {
          $('#result').append("<br>" + response);
        }
      });
    });
  </script>


</html>

 

3. Study1Ajax.html (http://localhost:81/Study1Ajax)

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <input type="text" placeholder="지갑에 얼마 있어요?" id="money">
    <input type="button" value="아이템" id="storeBnt">
    <br><br>
    <span id="result"></span>

  </body>
  <script  src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script>
  // text 박스로 이동
  $("#money").focus();
  // 입력 상태로 만든다
  // $("#storeBtn").click(function(){
  //   getItemFormServer();
  // })
  // 13(엔터)키를 누른다
  // $("#money").keydown(function(key){
  //   if(key.keyCode == 13) {
  //     $("#getItemBtn").click();
  //   }
  // });


  $('#storeBnt').click(function() {
    $.ajax({
      url : 'http://localhost:80/QueryStore',
      data : {
        money : $('#money').val()
      },
      success : function(response) {
        $('#result').append("<br>" + response);
        // text 박스로 이동 -> 문자열 지우기
        $('#money').focus();
        $('#money').val("");
      }
    });
  });

  </script>
</html>

 

4. carPrice.html (http://localhost:81/carPrice)

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <select id="manufacturer" value="manufacturer"> <!-- 드롭박스 타입의 선택 상자 -->
      <option value="0">제조사</option>
      <option value="2100">현대</option>
      <option value="1300">기아</option>
      <option value="1500">쌍용</option>
      <option value="3500">벤츠</option>
      <option value="3200">BMW</option>
    </select>

    <select id="color" value="color"> <!-- 드롭박스 타입의 선택 상자 -->
      <option value="0">색상</option>
      <option value="100">빨강</option>
      <option value="120">파랑</option>
      <option value="200">초록</option>
      <option value="130">노랑</option>
      <option value="80">검정</option>
    </select>
    <input type="button" value="가격 확인하기" id="checkPrice">
    <br>
    <span id="result"></span>

  </body>

  <script  src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script>
    $("#checkPrice").click(function(){
      $.ajax({
        url : 'http://localhost:80/calcCarPrice',
        data : {
          // 방법 1.
          // manufac : $("#manufacturer option:selected").val(),
          // color : $("#color option:selected").val()

          // 방법 2.
          manufac : $("#manufacturer option:selected").text(),
          color : $("#color option:selected").text()

        },
        success : function(response) {
          // $('#result').append("<br>" + response);
          // $("#result").html(response);
          $("#result").html(`${response}`);
        }
      });
    });
  </script>

</html>

 

5. function.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <input type="text" placeholder="num1을 입력" id="num1">
    <input type="text" placeholder="num2를 입력" id="num2">
    <input type="text" placeholder="num3를 입력" id="num3">

    <input type="button" value="가장 큰 수는?" id="Bnt"></button>
    <br><br>
    가장 큰 수는 : <span id="result"></span>

  </body>
  <script  src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script>
    // 자바스크립트 함수 사용법
    function functionName1() {
      console.log(1);
    }

    var functionName2 = function() {
      console.log(2);
    }

    var result1 = functionName1();
    var result2 = functionName2();

    console.log("----------------------");
    // for문 예제
    var cnt = 0;
    for ( ; ; ) {
      cnt++;
      console.log(cnt);
      if(cnt>5) break;
    }
    console.log("----------------------");
    // 숫자 3개 입력 받아 가장 큰 수 구하기

    $('#Bnt').click(function () {
      var response = findLargeNumber();
      $('#result').html(response);
    })

    function findLargeNumber(num1, num2, num3) {
      var num1 = parseInt($('#num1').val());
      var num2 = parseInt($('#num2').val());
      var num3 = parseInt($('#num3').val());

      if (num1 == num2 == num3) {
        return num1
      } else if (num1 > num2) {
        if (num1 > num3) {
          return num1
        } else {
          return num3
        }
      } else {
        if (num2 > num3) {
          return num2
        } else {
          return num3
        }
      }
    }

  </script>
</html>

 

 

 

가장 큰 수 구하기 좀 더 좋은 버전

var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app).listen(80);
console.log("server is running...")

// 1. 가장 큰 수 구하기 함수
app.get('/function', function (req, res) {
  res.sendfile("function.html");
});

var testVal = "abc";

app.get('/setVal', function (req, res) {
  testVal = req.query.val;
  res.send("ok");
});

app.get('/getVal', function(req, res) {
  res.send(testVal)
});
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <input type="text" name="num1">
    <input type="text" name="num2">
    <input type="text" name="num3">
    <input type="button" id="compareBtn" value="버튼">
    <br>
    가장 큰 수는 : <span id="result"></span>
  </body>
  <script  src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script>
    $("#compareBtn").click(function(){
      var maxVal = getMax();
      console.log(maxVal);
      $("#result").html(maxVal);
    });

    function getMax(val1, val2, val3) {
      var val1 = $("input[name=num1]").val();
      var val2 = $("input[name=num2]").val();
      var val3 = $("input[name=num3]").val();
      var maxVal = val1;

      console.log(val1);
      console.log(val2);
      console.log(val3);

      // console.log(maxVal);

      if (maxVal < val2) {
        maxVal = val2;
        // console.log(maxVal);
      }

      if (maxVal < val3) {
        maxVal = val3;
        // console.log(maxVal);
      }

      return maxVal;
    }

  </script>
</html>

 

1. app.js

var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app).listen(81);

app.get('/Study1', function (req, res) {
  res.sendfile("Study1 Matrix.html");
});

app.get('/Study2', function (req, res) {
  res.sendfile("Study2 RadioBox Calc.html");
});

app.get('/Study3', function (req, res) {
  res.sendfile("Study3 RadioBox Calc2.html");
});

app.get('/Study4', function (req, res) {
  res.sendfile("Study4 jquery.html");
});

app.get('/Study5', function (req, res) {
  res.sendfile("Study5 ChangeToJquery.html");
});

app.get('/Study6query', function (req, res) {
  console.log(req.query);
  if(req.query.a==10) {
    res.send("a는 10입니다.");
  }
  // if(req.query.a==20) {
  //   res.send("a는 20입니다.");
  // }
  // res.send("Hello world");

  // res.send(`합은 ${Number(req.query.num1) + Number(req.query.num2)}`);

  // var num1 = Number(req.query.num1);
  // var num2 = Number(req.query.num2);
  // res.send(`합은 ${num1 + num2} 입니다.`);
});

app.get('/Study7Ajax', function (req, res) {
  res.sendfile("Study7Ajax.html");
});



console.log("server is running...")

 

2. Study1 Matrix.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>for for for</title>
  </head>
  <body>

  </body>

  <script>

  var array1 = [];   // 1. 배열을 하나 생성해준다.

  for(var i=0;i<5;i++) {
    array1[i]= [];   // 2. 안쪽 배열을 생성해준다. (자바스크립트에는 자료형을 지정하는게 없기 때문에 이렇게 배열이라고 인식을 시켜줘야 한다.)
    for(var j=0;j<5;j++) {
      array1[i][j] = i * 15 + j * 3 + 1;
    }
  }
  console.log(array1);

  var array2 = [];
  for(var i=0;i<5;i++) {
    array2[i]= [];   // 2. 안쪽 배열을 생성해준다. (자바스크립트에는 자료형을 지정하는게 없기 때문에 이렇게 배열이라고 인식을 시켜줘야 한다.)
    for(var j=0;j<5;j++) {
      array2[i][j] = i*j;
    }
  }
  console.log(array2);

  var array3 = [];
  for(var i=0;i<5;i++) {
    array3[i]= [];   // 2. 안쪽 배열을 생성해준다. (자바스크립트에는 자료형을 지정하는게 없기 때문에 이렇게 배열이라고 인식을 시켜줘야 한다.)
    for(var j=0;j<5;j++) {
      array3[i][j] = String(i * 10 + j);
    }
  }
  console.log(array3);

  var array4 = [];
  for(var i=0;i<5;i++) {
    array4[i]= [];   // 2. 안쪽 배열을 생성해준다. (자바스크립트에는 자료형을 지정하는게 없기 때문에 이렇게 배열이라고 인식을 시켜줘야 한다.)
    for(var j=0;j<5;j++) {
      array4[i][j] = String(i) + String(j);
      // array4[i][j] = `${i}${j}`
    }
  }
  console.log(array4);


  </script>

</html>

 

3. Study2 RadioBox Calc.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <!-- id : <input type="text" id="loginID"><br>
    pass : <input type="password" id="loginPass"><br>
    <input type="button" value="login" id="loginBtn"> -->

    1번 &nbsp&nbsp&nbsp 0 <input type="radio" name="radioGroup1">
        &nbsp&nbsp&nbsp 1 <input type="radio" name="radioGroup1">
        &nbsp&nbsp&nbsp 2 <input type="radio" name="radioGroup1">
        &nbsp&nbsp&nbsp 3 <input type="radio" name="radioGroup1">
        &nbsp&nbsp&nbsp 가중치 <input type="text" id="ratio1"><br>

    2번 &nbsp&nbsp&nbsp 0 <input type="radio" name="radioGroup2">
        &nbsp&nbsp&nbsp 1 <input type="radio" name="radioGroup2">
        &nbsp&nbsp&nbsp 2 <input type="radio" name="radioGroup2">
        &nbsp&nbsp&nbsp 3 <input type="radio" name="radioGroup2">
        &nbsp&nbsp&nbsp 가중치 <input type="text" id="ratio2"><br>

    3번 &nbsp&nbsp&nbsp 0 <input type="radio" name="radioGroup3">
        &nbsp&nbsp&nbsp 1 <input type="radio" name="radioGroup3">
        &nbsp&nbsp&nbsp 2 <input type="radio" name="radioGroup3">
        &nbsp&nbsp&nbsp 3 <input type="radio" name="radioGroup3">
        &nbsp&nbsp&nbsp 가중치 <input type="text" id="ratio3"><br><br>

    <span id="result"></span><br><br>

    <input type="button" value="계산" id="calcBtn">

  </body>

  <script>

    document.getElementById("calcBtn").addEventListener('click', calcFunc)


    function calcFunc() {
      var result = 0;
      var boxTmp = 0;
      var ratioTmp = 0;
      var textTmp = "";

      // document.getElementsByName("radioGroup" + (i+1)).length
      for (var i=0; i<document.getElementsByName("radioGroup" + (i+1)).length; i++) {
        ratioTmp = document.getElementById("ratio" + (i+1)).value;
        // ratioArray[i] = document.getElementById("ratio" + (i+1)).value;
        // (document.getElementsByName("radioGroup" + (i+1)).length + 1)
        for(var j=0; j<4; j++) {
          if (document.getElementsByName("radioGroup" + (i+1))[j].checked == true) {
            boxTmp = j;
            // boxArray[i] = j;
            result = result + ratioTmp * boxTmp;
            if (i != 2) {
              textTmp = textTmp + ratioTmp + " x " + boxTmp + " + ";
            } else {
              textTmp = textTmp + ratioTmp + " x " + boxTmp + " ";
            }

          }
          console.log(boxTmp);
          console.log(ratioTmp);
        }
      }
      document.getElementById("result").innerHTML = textTmp + "= " + result;
    }

    // function calcFunc() {
    //   // getElementsById('id')    Elements 여러개다. 배열로 가져온다.
    //   var number1 = document.getElementsById('radiogGroup1').value;
    //   var ratio1 = document.getElementById('ragio1').value;
    //   var number2 = document.getElementsById('radiogGroup2').value;
    //   var ratio2 = document.getElementById('ragio2').value;
    //   var number3 = document.getElementsById('radiogGroup3').value;
    //   var ratio3 = document.getElementById('ragio3').value;
    //
    //   var result = number1 * ratio1 + number2 * ratio2 + number3 * raitio3;
    //
    // };


  </script>



</html>

 

4. Study3 RadioBox Calc2.html (위에꺼랑 같은건데 코드가 더 직관적)

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    1번 &nbsp&nbsp&nbsp 0 <input type="radio" name="s1">
        &nbsp&nbsp&nbsp 1 <input type="radio" name="s1">
        &nbsp&nbsp&nbsp 2 <input type="radio" name="s1">
        &nbsp&nbsp&nbsp 3 <input type="radio" name="s1">
        &nbsp&nbsp&nbsp 가중치 <input type="text" id="s1Rev"><br>

    2번 &nbsp&nbsp&nbsp 0 <input type="radio" name="s2">
        &nbsp&nbsp&nbsp 1 <input type="radio" name="s2">
        &nbsp&nbsp&nbsp 2 <input type="radio" name="s2">
        &nbsp&nbsp&nbsp 3 <input type="radio" name="s2">
        &nbsp&nbsp&nbsp 가중치 <input type="text" id="s2Rev"><br>

    3번 &nbsp&nbsp&nbsp 0 <input type="radio" name="s3">
        &nbsp&nbsp&nbsp 1 <input type="radio" name="s3">
        &nbsp&nbsp&nbsp 2 <input type="radio" name="s3">
        &nbsp&nbsp&nbsp 3 <input type="radio" name="s3">
        &nbsp&nbsp&nbsp 가중치 <input type="text" id="s3Rev"><br><br>

    <span id="result"></span><br><br>

    <input type="button" value="계산" id="calcBtn">

  </body>
  <script>
  document.getElementById("calcBtn").addEventListener('click', function(){
    var s1, s2, s3, s1r, s2r, s3r;
    for(var i = 0; i < document.getElementsByName("s1").length; i++) {
      if(document.getElementsByName("s1")[i].checked) {
        s1 = i;
        s1r = document.getElementById("s1Rev").value;
      }

      if(document.getElementsByName("s2")[i].checked) {
        s2 = i;
        s2r = document.getElementById("s2Rev").value;
      }

      if(document.getElementsByName("s3")[i].checked) {
        s3 = i;
        s3r = document.getElementById("s3Rev").value;
      }
    }

    document.getElementById("result").innerHTML += `${s1}x${s1r}
                                                   + ${s2}x${s2r}
                                                   + ${s3}x${s3r}
                                                   = ${s1*s1r+s2*s2r+s3*s3r}<br>`;

  });

  </script>
</html>

 

5. Study4 jquery.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
<!-- jquery 최신 사용하려고 복붙한거 -->
<script  src="http://code.jquery.com/jquery-latest.min.js"></script>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    Hello jquery

    <meta charset="utf-8">
    <title></title>
    <input type="text" id="inputText">
    <input type="button" value="testBtn" id="testBtn">

    <span id="outputArea"></span>

  </body>
  <script type="text/javascript">
    // document.getElementById("testBtn").addEventListener('click',function(){
      // console.log(document.getElementById("inputText").value);
      // document.getElementById("inputText").value;
      // document.getElementById("inputText").innerHTML = document.getElementById
    // });

    $('#testBtn').click(function(){
      $("#outputArea").html( $("#outputArea").html() + $("#inputText").val() );
      // $("#outputArea").append($("#inputText").val());
      // $("#outputArea").prepend($("#inputText").val());


    });



  </script>
</html>

 

6. Study5 ChangeToJquery.html (기존 단순 자바스크립트 방식에서 jquery를 사용한 방식으로 바꾸기)

<!DOCTYPE html>
<html lang="en" dir="ltr">
<script  src="http://code.jquery.com/jquery-latest.min.js"></script>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    1번 &nbsp&nbsp&nbsp 0 <input type="radio" name="s1">
        &nbsp&nbsp&nbsp 1 <input type="radio" name="s1">
        &nbsp&nbsp&nbsp 2 <input type="radio" name="s1">
        &nbsp&nbsp&nbsp 3 <input type="radio" name="s1">
        &nbsp&nbsp&nbsp 가중치 <input type="text" id="s1Rev"><br>

    2번 &nbsp&nbsp&nbsp 0 <input type="radio" name="s2">
        &nbsp&nbsp&nbsp 1 <input type="radio" name="s2">
        &nbsp&nbsp&nbsp 2 <input type="radio" name="s2">
        &nbsp&nbsp&nbsp 3 <input type="radio" name="s2">
        &nbsp&nbsp&nbsp 가중치 <input type="text" id="s2Rev"><br>

    3번 &nbsp&nbsp&nbsp 0 <input type="radio" name="s3">
        &nbsp&nbsp&nbsp 1 <input type="radio" name="s3">
        &nbsp&nbsp&nbsp 2 <input type="radio" name="s3">
        &nbsp&nbsp&nbsp 3 <input type="radio" name="s3">
        &nbsp&nbsp&nbsp 가중치 <input type="text" id="s3Rev"><br><br>

    <span id="result"></span><br><br>

    <input type="button" value="계산" id="calcBtn">

  </body>
  <script>
  $("#calcBtn").click(function() {
    var s1, s2, s3, s1r, s2r, s3r;
    for(var i = 0; i < $("[name=s1]").length; i++) {
      if($("[name=s1]")[i].checked) {
        s1 = i;
        s1r = $("#s1Rev").val();
      }

      if($("[name=s2]")[i].checked) {
        s2 = i;
        s2r = $("#s2Rev").val();
      }

      if($("[name=s3]")[i].checked) {
        s3 = i;
        s3r = $("#s3Rev").val();
      }
  };



    $("#result").html( `${s1}x${s1r}
                      + ${s2}x${s2r}
                      + ${s3}x${s3r}
                      = ${s1*s1r+s2*s2r+s3*s3r}<br>`);

  });

  </script>
</html>

 

7. Study6query (app.js만으로 작동. url에 쿼리를 넣어보자)

2020/05/14 - [개발자/Javascript] - node.js 접속 쿼리 분해

 

node.js 접속 쿼리 분해

var express = require('express'); var app = express(); var http = require('http'); var server = http.createServer(app).listen(80); app.get('/test', function (req, res) { console.log(req.query); res...

greendreamtrre.tistory.com

 

8. Study7Ajax.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <input type="button" value="호출" id="ajaxBnt">
    <br><br>
    <span id="result"></span>
  </body>
  <script  src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script>
    $("#ajaxBnt").click(function() {

      $.ajax({  // 호출한다. req 보낸다.
        // // 방법 1.
        // url : 'http://localhost/sumForm?num1=10&num2=20'
        // data : {}

        // 방법 2.
        url : 'http://localhost:80/Study6query',
        data : {
          num1 : 10,
          num2 : 20

      },
      success:function(response){
        console.log(response);
        $("#result").html(response);
        $("#result").html(`${response}`);
      }
    });

  });

  </script>


</html>

 

 

 

$(". class태그")

$("#id 태그")

$("[name=name태그]")

 

데이터베이스 시간에는 오라클로 sub query와 join을 배웠다.

오늘건 이해가 잘 되는데... 오히려 지난번 배운 그룹바이가 더 이해가 안 간다...

곧 기말고사에다 개인프로젝트 과제 제출인데 손도 못 대고 있고 감도 안 온다... 미치겠군;;

우선 오늘 할 것은... 내일 수업 듣는 자바스크립트 지난번 면접 가느라 수업 못 들었던거 복습하기...

'개발자 > TIL' 카테고리의 다른 글

TIL 20.06.19  (0) 2020.06.20
TIL 20.06.18  (0) 2020.06.20
TIL 20.06.16  (0) 2020.06.18
TIL 20.06.15  (0) 2020.06.16
TIL 20.06.13  (0) 2020.06.14

하루 종일 자바 수업만 했다...

근데 뭘 한건지 정말 하나도 모르겠는 하루다... ㅠㅠ

'개발자 > TIL' 카테고리의 다른 글

TIL 20.06.18  (0) 2020.06.20
TIL 20.06.17  (0) 2020.06.18
TIL 20.06.15  (0) 2020.06.16
TIL 20.06.13  (0) 2020.06.14
TIL 20.06.12  (0) 2020.06.14
-- 1. 다음 중 사용자의 입력값을 받기 위해 사용하는 특수문자는?
-- *, $, &, @     답 : &

-- 2. 다음 중 YEARWEEK 오름차순, PRODUCT 내림차순으로 정렬하는 방법 중 옳은 것은?
-- ORDER BY YEARWEEK ASC, PRODUCT DESC

-- 3. 112 서버 내 "SORT_EXAMPLE"테이블을 WEEK 별로 내림차순정렬하는 쿼리문을 작성하세요.
SELECT * FROM SORT_EXAMPLE
WHERE 1=1
ORDER BY TO_NUMBER(WEEK) DESC;

-- 4. 번문제 (kopo_channel_result)
SELECT PRODUCTGROUP, SUM(QTY) AS SUM_QTY
FROM KOPO_CHANNEL_RESULT
WHERE 1=1
GROUP BY PRODUCTGROUP
ORDER BY DECODE (PRODUCTGROUP,'TV',1,'APS',2,'MOBILE',3,'REF',4,'WM',5)

-- CASE WHEN 사용
SELECT PRODUCTGROUP, SUM(QTY) AS SUM_QTY
FROM KOPO_CHANNEL_RESULT
WHERE 1=1
GROUP BY PRODUCTGROUP
ORDER BY CASE WHEN PRODUCTGROUP = 'TV' THEN 1
              WHEN PRODUCTGROUP = 'APS' THEN 2
              WHEN PRODUCTGROUP = 'MOBILE' THEN 3
              WHEN PRODUCTGROUP = 'TV' THEN 4
              WHEN PRODUCTGROUP = 'WM' THEN 5 END

SELECT PRODUCTGROUP, SUM(QTY) AS SUM_QTY
FROM KOPO_CHANNEL_RESULT
WHERE 1=1
GROUP BY PRODUCTGROUP
ORDER BY CASE WHEN PRODUCTGROUP = 'TV' THEN 1
              WHEN     PRODUCTGROUP = 'APS' THEN 2
              WHEN PRODUCTGROUP = 'MOBILE' THEN 3
              WHEN PRODUCTGROUP = 'TV' THEN 4
              ELSE 5 END

-- 5. [SQL함수] - 다음 중 대문자로 변경하기 위한 함수는?
-- 답 : UPPER

-- 6. [SQL함수] - 실제로 보이기엔 STR인데 길이함수를 활용하여 LENGTH('컬럼명') 10 이라는 숫자가 나왔다. 이때 공백을 제거하는 함수는?
-- LPAD, TRIM, SUBSTR      답 : TRIM




-- SUB Query (1. FROM, 2. WHERE, 3. SELECT, 4. WITH AS)
-- 1. FROM SUB Query
SELECT A.*
FROM (
    SELECT *
    FROM KOPO_CHANNEL_SEASONALITY_NEW
    WHERE 1=1
    AND REGIONID = 'A01'
    ) A  -- () 안의 조회한 내용을 'A'라는 별칭으로 두겠다.

-- 검증하기
SELECT DISTINCT REGIONID FROM KOPO_CHANNEL_SEASONALITY_NEW  -- 원본에는 REGIONID가 여러개 존재.

SELECT DISTINCT REGIONID    -- FROM SUB Query에 의해 A01만 조회된다.
FROM (
    SELECT *
    FROM KOPO_CHANNEL_SEASONALITY_NEW
    WHERE 1=1
    AND REGIONID = 'A01'
    ) A  -- () 안의 조회한 내용을 'A'라는 별칭으로 두겠다.

   
SELECT *
FROM KOPO_CHANNEL_SEASONALITY_NEW
WHERE 1=1
AND PRODUCT IN (SELECT DISTINCT PRODUCT FROM KOPO_CHANNEL_RESULT_NEW)

SELECT DISTINCT PRODUCT
FROM KOPO_CHANNEL_SEASONALITY_NEW
WHERE 1=1

SELECT DISTINCT PRODUCT
FROM KOPO_CHANNEL_RESULT_NEW
WHERE 1=1

SELECT A.*,
        (SELECT AVG(QTY)
        FROM KOPO_CHANNEL_SEASONALITY_NEW
        WHERE REGIONID = A.REGIONID
        AND PRODUCT = A.PRODUCT
        GROUP BY A.REGIONID, A.PRODUCT) AS SUM_QTY
FROM KOPO_CHANNEL_SEASONALITY_NEW A

SELECT *
FROM KOPO_CHANNEL_SEASONALITY_NEW
WHERE 1=1
AND PRODUCT = 'PRODUCT47'
AND YEARWEEK = 201402;

-- 여기에다가~~~ 할인가격 -> 제수가 0인 경우를 평균으로?
SELECT A.*, A.IR/A.MAP_PRICE
FROM KOPO_PROMOTION_HK A

-- 여기에다가~~~ MAP_PRICE가 0인 경우, PRODUCT의 평균 가격으로 대체한다.
-- 내꺼
SELECT A.*,
    CASE WHEN A.MAP_PRICE = 0 OR A.MAP_PRICE IS NULL THEN
        (
        SELECT AVG(MAP_PRICE)
        FROM KOPO_PROMOTION_HK
        WHERE REGIONID = A.REGIONID
        AND PRODUCT = A.PRODUCT
        GROUP BY REGIONID, PRODUCT)
        ELSE A.MAP_PRICE END AS MAP_PRICE
FROM KOPO_PROMOTION_HK A

-- ITEM이 다른게 있네...
SELECT A.*,
    CASE WHEN A.MAP_PRICE = 0 OR A.MAP_PRICE IS NULL THEN
        (
        SELECT AVG(MAP_PRICE)
        FROM KOPO_PROMOTION_HK
        WHERE REGIONID = A.REGIONID
        AND PRODUCT = A.PRODUCT
        AND ITEM = A.ITEM
        GROUP BY REGIONID, PRODUCT, ITEM)
        ELSE A.MAP_PRICE END AS MAP_PRICE
FROM KOPO_PROMOTION_HK A

--민석
SELECT A.*,
    CASE WHEN A.MAP_PRICE=0 OR A.MAP_PRICE IS NULL THEN
    (
    SELECT AVG(MAP_PRICE)
    FROM KOPO_PROMOTION_HK B
    WHERE B.PRODUCT=A.PRODUCT GROUP BY B.PRODUCT)
    ELSE A.MAP_PRICE
    END AS MAP_PRICE_NEW
FROM KOPO_PROMOTION_HK A
WHERE 1=1

-- 상민


SELECT
    A.REGIONID,
    A.ITEM,
    A.TARGETWEEK,
    A.PLANWEEK,
    NVL (A.MAP_PRICE,0) AS MAP_PRICE,
    A.IR,
    A.PRODUCT
FROM KOPO_PROMOTION_HK A

SELECT
    A.REGIONID,
    A.ITEM,
    A.TARGETWEEK,
    A.PLANWEEK,
    NVL2 (A.MAP_PRICE,A.MAP_PRICE,0) AS MAP_PRICE,
    A.IR,
    A.PRODUCT
FROM KOPO_PROMOTION_HK A

-- 0을 빼고 평균을 구할지, 0을 포함하고 평균을 구할지도 고민해야한다.

SELECT B.*,
    CASE WHEN B.MAP_PRICE = 0 THEN ( SELECT AVG(MAP_PRICE)
                                       FROM KOPO_PROMOTION_HK C
                                       WHERE 1=1
                                       AND C.REGIONID = B.REGIONID
                                       AND C.ITEM = B.ITEM
                                    )
        ELSE B.MAP_PRICE END AS MAP_PRICE_NEW
FROM (
        SELECT
            A.REGIONID,
            A.ITEM,
            A.TARGETWEEK,
            A.PLANWEEK,
            NVL (A.MAP_PRICE,0) AS MAP_PRICE,
            A.IR,
            A.PRODUCT
        FROM KOPO_PROMOTION_HK A
    ) B
WHERE 1=1

AND REGIONID = 'A01'
AND ITEM = 'ITEM00533'
GROUP BY REGIONID, ITEM


SELECT *
FROM (
        SELECT * FROM KOPO_CHANNEL_RESULT
        WHERE 1=1
        AND PRODUCTGROUP = 'TV'
    ) A
    
WITH A AS
    (
        SELECT * FROM KOPO_CHANNEL_RESULT
        WHERE 1=1
        AND PRODUCTGROUP = 'TV'
    )
SELECT * FROM A;


-- 데이터 조인
SELECT *    -- 124,658건
FROM KOPO_CHANNEL_SEASONALITY_NEW

SELECT *    -- 73건
FROM KOPO_REGION_MST

SELECT *    -- 124,658 X 73 = 9,100,034건
FROM KOPO_CHANNEL_SEASONALITY_NEW,
KOPO_REGION_MST

-- ANSI METHOD

SELECT A.*, B.REGIONNAME
FROM KOPO_CHANNEL_SEASONALITY_NEW A
INNER JOIN KOPO_REGION_MST B
ON A.REGIONID = B.REGIONID

SELECT A.*, B.*   -- 124,344건 (REGIONID 컬럼을 기준으로, A와 B의 교집합.)
FROM KOPO_CHANNEL_SEASONALITY_NEW A
INNER JOIN KOPO_REGION_MST B
ON A.REGIONID = B.REGIONID

SELECT A.*, B.*    -- 124,658건 (REGIONID 컬럼을 기준으로, A를 기준으로 B를 조인. B는 없고 A에만 있는 데이터 314건이 추가로 포함됨.)
FROM KOPO_CHANNEL_SEASONALITY_NEW A
LEFT JOIN KOPO_REGION_MST B
ON A.REGIONID = B.REGIONID

SELECT A.*, B.*    -- 124,348건 (REGIONID 컬럼을 기준으로, B를 기준으로 A를 조인. A는 없고 B에만 있는 데이터 4건이 추가로 포함됨.)
FROM KOPO_CHANNEL_SEASONALITY_NEW A
RIGHT JOIN KOPO_REGION_MST B
ON A.REGIONID = B.REGIONID

SELECT A.*, B.*    -- 124,662건 (REGIONID 컬럼을 기준으로, A와 B의 합칩합. 124,344 + 314 + 4 = 124,662)
FROM KOPO_CHANNEL_SEASONALITY_NEW A
FULL OUTER JOIN KOPO_REGION_MST B
ON A.REGIONID = B.REGIONID


-- 실습
SELECT * FROM KOPO_JOIN_TEST

SELECT * FROM KOPO_JOIN_TEST2

SELECT A.*, B.*
FROM KOPO_JOIN_TEST A
INNER JOIN KOPO_JOIN_TEST2 B
ON (A.REGIONID = B.REGIONID) AND (A.SALESID = B.SALESID)

SELECT A.*, B.*
FROM KOPO_JOIN_TEST A
LEFT JOIN KOPO_JOIN_TEST2 B
ON (A.REGIONID = B.REGIONID) AND (A.SALESID = B.SALESID)

SELECT A.*, B.*
FROM KOPO_JOIN_TEST A
RIGHT JOIN KOPO_JOIN_TEST2 B
ON (A.REGIONID = B.REGIONID) AND (A.SALESID = B.SALESID)

SELECT A.*, B.*
FROM KOPO_JOIN_TEST A
FULL OUTER JOIN KOPO_JOIN_TEST2 B
ON (A.REGIONID = B.REGIONID) AND (A.SALESID = B.SALESID)


-- PIVOT
SELECT * FROM DT_RESULT_FINAL2  -- RECORD COUNT : 44
--WHERE SALES = 2100
ORDER BY PRODUCTGROUP, PRODUCT, ITEM, YEARWEEK, "MEASURE"     -- MEASURE 가 예약어인데 컬럼명으로 들어가있어서 쌍따옴표를 해준다.


--CREATE TABLE DT_RESULT_FINAL3 AS      -- 피벗된 테이블을 'DT_RESULT_FINAL3'라는 테이블로 생성한다.
SELECT -- RECORD COUNT : 22 (PIVOT에 의해 동일한 PRODUCTGROUP, PRODUCT, ITEM, YEARWEEK, MEASURE을 가지면서 서로 다른 2개의 MEASURE(REAL_QTY, PREDICTION_QTY)를 각각 분리해 컬럼으로 만들어주어 절반으로 줄었다.
    *
     FROM (
        SELECT  *
        FROM DT_RESULT_FINAL2
)
PIVOT( 
    SUM(SALES)
    FOR MEASURE IN 
   ('REAL-QTY' AS REAL_QTY,'PREDICTION-QTY' AS PREDICTION_QTY)
)
ORDER BY PRODUCTGROUP, PRODUCT, ITEM, YEARWEEK

SELECT
    *
     FROM (
        SELECT  *
        FROM DT_RESULT_FINAL2
)
PIVOT( 
    AVG(SALES)      -- 피벗 후 row에 들어갈 'REAR_QTY'나 'PREDICTION_QTY'가 2개 이상일 수 있기 때문에 반드시 SUM이나 AVG를 해서 넣어줘야한다.
    FOR MEASURE IN 
   ('REAL-QTY' AS REAL_QTY,'PREDICTION-QTY' AS PREDICTION_QTY)
)
ORDER BY PRODUCTGROUP, PRODUCT, ITEM, YEARWEEK

-- UNPIVOT
WITH T AS( 
    SELECT * FROM DT_RESULT_FINAL3
)
SELECT * FROM T
UNPIVOT(QTY FOR MEASURE IN(REAL_QTY, PREDICTION_QTY))

-- UNPIVOT 검증하기
SELECT
    "MEASURE",
    PRODUCTGROUP,
    PRODUCT,
    ITEM,
    YEARWEEK,
    SALES
FROM DT_RESULT_FINAL2
WHERE 1=1
AND PRODUCTGROUP = 'PG02'
AND ITEM = 'ITEM0115'
AND YEARWEEK = 201632
ORDER BY PRODUCTGROUP, PRODUCT, ITEM, YEARWEEK, "MEASURE"

WITH T AS( 
    SELECT * FROM DT_RESULT_FINAL3
)
SELECT
    "MEASURE",
    PRODUCTGROUP,
    PRODUCT,
    ITEM,
    YEARWEEK,
    QTY
FROM T
UNPIVOT(QTY FOR MEASURE IN(REAL_QTY, PREDICTION_QTY))
WHERE 1=1
AND PRODUCTGROUP = 'PG02'
AND ITEM = 'ITEM0115'
AND YEARWEEK = 201632
ORDER BY PRODUCTGROUP, PRODUCT, ITEM, YEARWEEK, "MEASURE"


SELECT * FROM PRO_FCST_RESULT_1WEEK
WHERE 1=1
AND PRD_SEG1 = 'PRDA'
AND PRD_SEG2 = 'PRDA1'
AND PRD_SEG3 = '313'

파이썬 머신러닝을 decision tree에서 다른 것으로 바꿔 적용하는 것을 했다.

스위프트 아... 동영상 보고 복습해야지.... 뭐했더라 ㅠㅠ

자바 팀프로젝트를 열심히 했다. 코드를 짤 때 예외처리까지 하려니 생각할게 엄청 많아져서 힘들었다.

'개발자 > TIL' 카테고리의 다른 글

TIL 20.06.17  (0) 2020.06.18
TIL 20.06.16  (0) 2020.06.18
TIL 20.06.13  (0) 2020.06.14
TIL 20.06.12  (0) 2020.06.14
TIL 20.06.11  (0) 2020.06.14

자바 팀프 코드를 이것저것 개선하고 세션 처리를 다양한 곳에 적용시켰다.

문제는... 세션이 탭간의 공유가 잘 안 된다... 너무 느리거나 간혹 공유 자체가 안 되거나...

뭐가 문제지?? 스프링 문제인가?? localStorage나 sessionStorage라는 것을 쓰면 탭간의 공유가 잘 안 되던 문제를 완벽히 해결할 수 있을 것 같은데... 어떻게 쓰는거죠? ㅠㅠ

'개발자 > TIL' 카테고리의 다른 글

TIL 20.06.16  (0) 2020.06.18
TIL 20.06.15  (0) 2020.06.16
TIL 20.06.12  (0) 2020.06.14
TIL 20.06.11  (0) 2020.06.14
TIL 20.06.10  (0) 2020.06.10

+ Recent posts