SQLite中筛选指定数据后添加两值相除结果行的方法
在SQLite中实现需求的解决方案
这在SQLite中完全可行,最直接的方式是使用UNION ALL将原查询的结果与计算出的比率行合并,具体SQL语句如下:
-- 查询原始目标数据 SELECT year, region, id, value FROM my_table WHERE region = 'Asia' AND year = 2021 AND id IN ('01', '03') -- 用IN替代OR更简洁,若id是数值类型则去掉引号 UNION ALL -- 添加计算比率的行 SELECT 2021 AS year, 'Asia' AS region, 'Ratio(03/01)' AS id, -- 自定义id标识这是比率行 (SELECT value FROM my_table WHERE region='Asia' AND year=2021 AND id='03') / (SELECT value FROM my_table WHERE region='Asia' AND year=2021 AND id='01') AS value
注意事项:
- 若
id字段是数值类型,需去掉SQL中的单引号(数值类型的01等价于1,如果你的实际数据中id是带前导零的字符串,必须保留引号)。 - 为避免除数为0的错误,可以用
NULLIF处理分母,比如将分母子查询改为SELECT NULLIF(value, 0) FROM ...,这样当ID01的value为0时,结果会返回NULL而非报错。
内容的提问来源于stack exchange,提问作者code_beginner
相关产品推荐
相关产品推荐

