2
我想請問,如果有人可以讓我一個查詢,可能會從數值列和hstore列的值。這顯然對於我的SQL能力來說太多了。PostgreSQL,SUM和GROUP從數字列和hstore
一個表:
DROP TABLE IF EXISTS mytry;
CREATE TABLE IF NOT EXISTS mytry
(mybill int, price numeric, paym text, combined_paym hstore);
INSERT INTO mytry (mybill, price, paym, combined_paym)
VALUES (10, 10.14, '0', ''),
(11, 23.56, '0', ''),
(12, 12.16, '3', ''),
(13, 12.00, '6', '"0"=>"4","3"=>"4","2"=>"4"'),
(14, 14.15, '6', '"0"=>"2","1"=>"4","3"=>"4","4"=>"4.15"'),
(15, 13.00, '1', ''),
(16, 9.00, '4', ''),
(17, 4.00, '4', ''),
(18, 4.00, '1', '');
這裏是票據,價格和每個賬單支付方法的列表。
有些賬單(這裏是13和14)可以合併付款。付款方式從0到5枚舉,其中描述了具體的付款方式。
爲此,我做這個查詢:
SELECT paym, SUM(price) FROM mytry WHERE paym::int<6 GROUP BY paym ORDER BY paym;
這總結的價格付款方式0-5。 6不是付款方式,而是一個標誌,意味着我們應該在這裏考慮hstore'combined_paym'的付款方式和價格。這是我不知道如何解決的。將'聯合付款'與'付款'和'價格'的付款方式和價格相加。
這個查詢給出的結果:
"0";33.70
"1";17.00
"3";12.16
"4";13.00
但結果不正確,因爲這裏有沒有從法案的13和14
真正的結果應該是總結的數據:
"0";39.70
"1";21.00
"2";4.00
"3";20.16
"4";17.15
請,如果有人能讓我正確的查詢,它會給出給定數據的最後結果。
我想過這樣的事情,但無法把它在一起。大!這看起來就像它給出了正確的結果。此外,我從未使用'each'代替 - >來取消hstore元素。感謝您提供解決方案和可行的示例。 –