準備報表輸入
本例來源已有整數十分位單位一、二,旁邊 REAL 只作近似顯示。報表要正好三個十分位單位,二進制小數相加未必等於原式 0.3 的二進制值,所以用原整數單位比。
以下記錄及報表規則均為原創假設。在新 SQLite 測試資料庫重做建表,預覽包含此小型例子每張表。
| 編號 | 組別 | 近似顯示值 | 十分位單位 |
|---|---|---|---|
| 1 | A | 0.1 | 1 |
| 2 | A | 0.2 | 2 |
CREATE TABLE measures(id INTEGER PRIMARY KEY,batch TEXT NOT NULL,display_value REAL NOT NULL,tenths INTEGER NOT NULL); INSERT INTO measures VALUES(1,'A',0.1,1),(2,'A',0.2,2);比較錯誤及更正結果
SELECT batch,SUM(tenths) AS tenths FROM measures GROUP BY batch HAVING SUM(display_value)=0.3 ORDER BY batch;| 查詢結果 |
|---|
| 沒有回傳資料(空結果) |
SELECT batch,SUM(tenths) AS tenths FROM measures GROUP BY batch HAVING SUM(tenths)=3 ORDER BY batch;| 組別 | 十分位單位 |
|---|---|
| A | 3 |
REAL 等號沒有結果,SUM(tenths)=3 則回 A。此修正靠已有精確單位欄,不是任意取整未知量度。
用新副本測邊界
再加零讀數、零單位,精確合計仍三。
另開新資料庫重做原建表,才套下列改動及更正查詢。空結果在表內用已標明空結果文字表示,不是假資料行。
INSERT INTO measures VALUES(3,'A',0.0,0);
SELECT batch,SUM(tenths) AS tenths FROM measures GROUP BY batch HAVING SUM(tenths)=3 ORDER BY batch;| 組別 | 十分位單位 |
|---|---|
| A | 3 |
A 按原整數基礎合計多少而符合?
查看參考答案
1+2=3 個十分位單位,加零不變。REAL 等號沒結果,不能證明離散合計不符。