用SQL生成對戰表

2021-07-03 19:40:55 字數 1847 閱讀 7920

前幾天發生在群裡的討論

下面有如下需求

c1 球隊id

c2 球隊名稱

sql> with dao as

2 (

3 select 1 c1,』a』 c2 from dual

4 union all

5 select 2 c1,』b』 c2 from dual

6 union all

7 select 3 c1,』c』 c2 from dual

8 )

9 select *

10 from dao

11 /c1 c

———- -

1 a2 b

3 c現在需要生成一張對戰表

每個球隊都要與其他球隊對戰一次。

解法1:簡單不等連線

sql> with dao as

2 (

3 select 1 c1,』a』 c2 from dual

4 union all

5 select 2 c1,』b』 c2 from dual

6 union all

7 select 3 c1,』c』 c2 from dual

8 )

9 select t1.c2||』 pk 『||t2.c2

10 from dao t1,dao t2

11 where t1.c1 with dao as

2 (

3 select 1 c1,』a』 c2 from dual

4 union all

5 select 2 c1,』b』 c2 from dual

6 union all

7 select 3 c1,』c』 c2 from dual

8 )

9 select res

10 from

11 (

12 select row_number() over ( order by t1.c1+t1.c1) rn ,t1.c2||』 pk 『||t2.c2 res

13 from dao t1,dao t2

14 where t1.c2 !=t2.c2 ) inner

15 where mod(inner.rn,2) =1

16 /res

——a pk b

b pk a

c pk a

解法3:遞迴查詢

sql> with dao as

2 (

select 1 c1,』a』 c2 from dual

3 4 union all

5 select 2 c1,』b』 c2 from dual

6 union all

7 select 3 c1,』c』 c2 from dual

8 )

9 select cola||』 pk 『||colb

10 from (

11 select prior c2 cola,c2 colb

12 from dao

13 connect by prior c1=c1+1)

14 where cola is not null

15 ;cola||

——b pk a

c pk b

b pk a

從實現方法上來看第一種是最好的方式,簡單,高效。

我們寫程式不一定非得要用某些複雜的特性,

只要能滿足需求,越簡單的,往往意味越高效。

半監督生成對抗網路 生成對抗網路

一 生成對抗網路相關概念 一 生成模型在概率統計理論中,生成模型是指能夠在給定某些隱含引數的條件下,隨機生成觀測資料的模型,它給觀測值和標註資料序列指定乙個聯合概率分布。在機器學習中,生成模型可以用來直接對資料建模,也可以用來建立變數間的條件概率分布。通常可以分為兩個型別,一種是可以完全表示出資料確...

生成對抗網路

我們提出乙個框架來通過對抗方式評估生成模型,我們同時訓練兩個模型 乙個生成模型g捕捉資料分布,乙個鑑別模型d估計乙個樣本來自於訓練資料而不是g的概率。g的訓練過程是最大化d犯錯的概率。這個框架與minmax兩個玩家的遊戲相對應。在任意函式g和d的空間存在乙個唯一解,g恢復訓練資料的分布,d等於1 2...

生成對抗網路

0.監督和無監督 本質 有無標籤資料 1.自動編碼器 只是重構原輸入 輸入 編碼 中間表示 潛在表示,code 解碼 重構 通常用於 1 忽略雜訊 2 壓縮維度 有聚類效果 可以達到pca和主成分分析效果 2.變分自動編碼器 vae variational autoencoders 可以生成新的樣本...