我在sqlite中的原始表如下:
--------------------
names_ID | values
--------------------
frank | 31
chris | 50
chris | 40
tim | 65
tim | 85
然后我应用以下查询:
SELECT names_ID, GROUP_CONCAT(values, ',') FROM table GROUP BY names_ID
从上面的查询我得到下表:
--------------------
names_ID | values
--------------------
frank | 31
chris | 50,40
tim | 65,85
对于有逗号分隔的两个值的行,我想获得这两个值的百分比(例如,对于' tim'行,百分比为65/85 * 100 = 76.5)。
我希望我的预期结果是:
--------------------
names_ID | percent
--------------------
chris | 80
tim | 76.5
我无法想出任何接近我想要的输出的尝试。任何帮助表示赞赏。
答案 0 :(得分:1)
你不需要通过CSV来回答我的想法。如果每个名称实际上只有两个值(最多)与之关联,那么简单的GROUP BY
聚合应该有效:
SELECT
names_ID,
CAST(MIN(values) AS float) / CAST(MAX(values) AS float) * 100 AS percent
FROM yourTable
GROUP BY names_ID
HAVING COUNT(*) = 2
注意:我不喜欢names_ID
分组的想法,因为即使是一小群人,名字也可能不是唯一的。相反,names_ID
应该是一个自动增量列,您应该创建一个名为names
的新列,其中包含实际的名称文本。