在某些情况下需要帮助计算列

时间:2017-11-03 17:27:26

标签: mysql

我是一个菜鸟,所以对等待的noobism等道歉。

以下是我正在使用的内容:

此表捕获来自远程传感器的数据,包括湿度和温度。在这种情况下,我专门使用event_type ="传感器",event_description =" Celsius"和event_data =以摄氏度为单位的温度。

我想创建一个视图,提供将摄氏温度转换为华氏温度的列。 (或开尔文等)

表格列:

   event_id int(11) AI PK

   event_date date 

   event_time time 

   event_type char(50) 

   event_description char(50) 

   event_data char(100) 

   event_platform char(100)

感谢您的帮助!

event_id    event_date  event_time  event_type  event_description   ‌​event_data 
618 2017-11-04  20:17:03    Sensor Celsius  26.2999992371 
617 2017-11-04  20:17:03    Sensor  Humidity    62.0 
616 2017-11-04  19:17:03    Sensor Celsius  27.1000003815 
615 2017-11-04  19:17:03    Sensor  Humidity    59.7000007629 
614 2017-11-04 18:17:03 Sensor  Celsius 28.5 
613 2017-11-04  18:17:03    Sensor  Humidity    56.9000015259 
612 2017-11-04 17:17:03 Sensor  Celsius 31.1000003815 
611 2017-11-04  17:17:03    Sensor  Humidity    51.4000015259

1 个答案:

答案 0 :(得分:0)

我预见到该表的设计存在问题。为什么数字数据会在char(100)列中捕获?那真的不好。也不确定为什么要使用如此多的固定宽度的char列,这将大大浪费存储空间。

select
    event_type
  , event_date date 
  , event_time time 
  , event_description
  , event_data as Celcius
  , cast(event_data as decimal(12,3)) * 1.8 + 32 as Fahrenheit
  , cast(event_data as decimal(12,3)) + 273.15 as Kelvin
from yourtable
where event_type = 'Sensor'
and event_description = 'Celsius'

nb:十进制(12,3)的选择没有科学,就在我的手指落地的地方