假設我有以下資料:
-------- -------
| Group | Data |
-------- -------
| 1 | row 1 |
| 1 | row 2 |
| 1 | row 3 |
| 20 | row 1 |
| 20 | row 3 |
| 10 | row 1 |
| 10 | row A |
| 10 | row 2 |
| 10 | row 3 |
-------- -------
是否可以繪制一張地圖,顯示哪些組有哪些行?組可能不具有傳染性,因此可以將它們放入單獨的表中,并使用行索引作為字串索引。像這樣的東西:
-------
| Group |
-------
| 1 |
| 20 |
| 10 |
-------
------- ----------------
| Data | Found in group |
------- ----------------
| row 1 | 111 |
| row A | 1 |
| row 2 | 1 1 |
| row 3 | 111 |
------- ----------------
其中第一個字符代表第 1 組,第 2 個字符代表第 20 組,第 3 個字符代表第 10 組。
組行的順序并不重要,只要我可以參考哪一行與哪個字符一起使用。
我之所以這么問,是因為我在檔案中看到了這個瘋狂的例子,生成了一個 fractal,但我無法完全理解它。
這是可行的嗎?
uj5u.com熱心網友回復:
要找到缺失值,首先要準備一個具有所有可能組合的資料集。您可以使用CROSS JOIN.
獲得該 DataSet 后,將其與實際的 DataSet 進行比較。
考慮到 Order by 是在 Grp 列中完成的,您可以使用下面的方法來實作它。
SELECT
a.Data,group_concat(case when base.Grp is null then "." else "1" end,'') as Found_In_Group
,group_concat(b.Grp) as Group_Order
FROM
(SELECT Data FROM yourtable Group By Data)a
CROSS JOIN
(SELECT Grp FROM yourtable Group By Grp Order by Grp)b
LEFT JOIN yourtable base
ON b.Grp=base.Grp
AND a.Data=base.Data
GROUP BY a.Data
注意:考慮.而不是空白以獲得更好的可見性來表示缺失的組。
| 資料 | Found_In_Group | Group_Order |
|---|---|---|
| 第 1 行 | 111 | 1,10,20 |
| 第 2 行 | 11. | 1,10,20 |
| 第 3 行 | 111 | 1,10,20 |
| A排 | .1。 | 1,10,20 |
演示:在這里試試
uj5u.com熱心網友回復:
SELECT Data, group_concat("Group") AS "Found in group"
FROM yourtable
GROUP BY Data
將為您提供 CSV 組串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/480474.html
上一篇:GodotSQLite外鍵
