如何在SQLite表的单个列中减去值?

时间:2017-05-22 04:52:36

标签: sqlite

我在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

我无法想出任何接近我想要的输出的尝试。任何帮助表示赞赏。

1 个答案:

答案 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的新列,其中包含实际的名称文本。