Postgres - 是否可以按我的某个字段的子字符串进行分组?

时间:2015-03-24 14:44:05

标签: postgresql

这是我的表:

 id                | integer                 | not null default nextval('frontend_prescription_id_seq'::regclass)
 actual_cost       | double precision        | not null
 chemical_id       | character varying(9)    | not null
 practice_id       | character varying(6)    | not null

我想查询特定practice_id的结果,然后按actual_cost按日期和{{1>前两个字符加总{{1} }}。这在Postgres有可能吗?

换句话说,我希望输出看起来像这样:

chemical_id

这是我当前的查询,但它按整个processing_date | cost | chemical_id_substr 01-01-2010 1234 01 01-02-2010 4366 01 01-01-2010 3827 02 01-02-2010 8768 02 分组,而不是子字符串:

chemical_id

我不确定如何通过子字符串将其更改为分组,或者是否应该添加功能索引,或者是否应该对表格进行非规范化并添加新列。谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

您可以这样做,但您还需要确保在选择列表中使用子字符串,而不是完整列:

SELECT SUM(actual_cost) as cost, 
       processing_date, 
       left(chemical_id,2) as id --<< use the same expression here as in the GROUP BY
FROM frontend_items
WHERE practice_id= %s 
GROUP BY processing_date, left(chemical_id,2);