【发布时间】:2018-01-26 01:11:45
【问题描述】:
我花了几个小时修补这个问题,但无济于事。我有一个数据集,其中包含我想将特定列子选择到不同数据集中的行。
我遇到的问题是将AT,BB,BO,ES,LK 转换为单个partner 列,同时按 FID 和时间分组。
我已经能够自己复制大部分数据集。 AT... 列最初提供为 0、1、5 或 10。我唯一好奇的数据是 1 和 5,并转换为列名。初始数据集由此查询生成:
select FID, `time`,
if((`AT` != 0 and `AT` < 10), "AT", "") as `AT`,
if((`BB` != 0 and `BB` < 10), "BB", "") as `BB`,
if((`BO` != 0 and `BO` < 10), "BO", "") as `BO`,
if((`BT` != 0 and `BT` < 10), "BT", "") as `BT`,
if((`ES` != 0 and `ES` < 10), "ES", "") as `ES`
from f_data group by FID, `time`;
示例输入
`FID` `time` `AT``BB``BO``ES``LK`
BT201 7:00 AT BB ES LK
BT201 7:15 AT BB BO LK
BT201 7:30 BO ES LK
BT201 7:45 AT BB BO ES LK
BT201 8:00 AT BO ES LK
期望的输出
`FID` `time` `partner`
BT201 7:00 AT
BT201 7:00 BB
BT201 7:00 ES
BT201 7:00 LK
BT201 7:15 AT
BT201 7:15 BB
BT201 7:15 BO
BT201 7:15 LK
我已经能够使用 plyr 通过 R 生成此输出,但无法在纯 MySQL 中生成此输出。如果需要,mysql --version 输出如下:
Ver 14.14 Distrib 5.5.58, for debian-linux-gnu (x86_64) using readline 6.2
【问题讨论】:
-
你能显示你的查询吗?
-
嗨@Ibu,不幸的是,这些数据是在我无法查看或修改其结构的视图中提供的。
-
为了使用mysql,您需要能够编写查询。
-
@Ibu 我将格式化我在最初问题中复制数据集的查询。
标签: mysql sql database performance