準備報表輸入
本例找合計四。INTEGER 欄有親和類型,但 SUM(qty) 運算不帶該欄親和性;對文字 '4' 不會像直接整數欄比較般轉換,須用數字 4。
以下記錄及報表規則均為原創假設。在新 SQLite 測試資料庫重做建表,預覽包含此小型例子每張表。
| 編號 | 組代碼 | 數量 |
|---|---|---|
| 1 | A | 2 |
| 2 | A | 2 |
| 3 | B | 4 |
CREATE TABLE units(id INTEGER PRIMARY KEY,group_code TEXT NOT NULL,qty INTEGER NOT NULL); INSERT INTO units VALUES(1,'A',2),(2,'A',2),(3,'B',4);比較錯誤及更正結果
SELECT group_code,SUM(qty) AS total_units FROM units GROUP BY group_code HAVING SUM(qty)='4' ORDER BY group_code;| 查詢結果 |
|---|
| 沒有回傳資料(空結果) |
SELECT group_code,SUM(qty) AS total_units FROM units GROUP BY group_code HAVING SUM(qty)=4 ORDER BY group_code;| 組代碼 | 合計單位 |
|---|---|
| A | 4 |
| B | 4 |
錯結果空,但 A=2+2、B=4。數值比較回兩組,聚合後把目標加引號可改意思。
用新副本測邊界
向 C 的 INTEGER qty 欄插文字 '4',欄親和性按數值存,數值合計篩選也回 C。
另開新資料庫重做原建表,才套下列改動及更正查詢。空結果在表內用已標明空結果文字表示,不是假資料行。
INSERT INTO units VALUES(4,'C','4');
SELECT group_code,SUM(qty) AS total_units FROM units GROUP BY group_code HAVING SUM(qty)=4 ORDER BY group_code;| 組代碼 | 合計單位 |
|---|---|
| A | 4 |
| B | 4 |
| C | 4 |
哪些原組符合真正數量四要求?
查看參考答案
A、B 合計都四,邊界加 C 後也符合,因欄位把四按數值存。