sql數據集
『壹』 求一個sql語句,查詢某個值在數據集中的佔比情況
寫一個sql語句恐怕不行。
應當先寫一段sql語句,計算出links欄位的總和。
然後再寫一段sql語句,以links欄位的每一個值除以links欄位的總和,這樣就能得出links欄位每個值在該欄位總和里的佔比。
這種情況下,就要寫兩端sql語句。
『貳』 如何返回sql如下數據集急需!!!
使用自鏈或是臨時表就可以了!
二樓,這樣的表怎麼不符合3NF了?這樣表的關系依賴是(student,course)->mark,為什麼說他不符合第三範式?我看符合的很呢!
自連接正如一樓所寫,但一樓的結果是否正確就不敢保證的。因為必須考慮的是某一個學生在某一科沒有成績的情況。比如李四沒有語文的成績,注意不是語文成績是0或null,而是沒有這條記錄時,一樓的語句是否還能正確的得出李四的結果?
seelct a.student,a.mark,b.mark,c.mark from table1 a join table1 b on a.student = b.student,table1 b join table1 c on b.student = c.student where a.course = '語文' and b.course = '數學' and c.course ='物理'
中間三表連接條件,如果寫了前兩具,則不必再說第三個,因為那是多餘的。
臨時表只是一個中間過程,實際在SQL中,視圖,表,語唏,存儲過程沒有區別的。
select a.student,a.mark,b.mark,c.mark from (select a.student,a.mark from table1 a where a.course='語文'),(select b.student,b.mark from table1 b where b.course='數學'),(select c.student,c.mark from table1 c where c.course='語文') where a.student=b.student and a.student = c.student
也不是不必寫b.student = c.student的。
如果煩麻煩,將from後的三個select改寫成臨時表或是視圖就可以了!
重審一下就是該表符合3NF,如果有些結果出不來的時間,連接條件變成全連接即可!
一樓代碼的主要缺點可能就是會引起不一致性的。雖然變成全連接可以得到結果,但第一個人的順序可能是「語文、數學、物理」,但到第二個就可能是「語文,物理,數學」不同的順序,難易達到一定的順序對應的!所以一樓代碼正確,但沒有實用性!
『叄』 sql中dataset在本地生成一個數據集之後,其內部結構是怎樣的
因為DataSet可以看做是內存中的資料庫,也因此可以說DataSet是數據表的集合,它可以包含任意多個數據表(DataTable),而且每一 DataSet中的數據表(DataTable)對應一個數據源中的數據表(Table)或是數據視圖(View)。
簡單點說就是一個本地內存資料庫,可以存多個表。
『肆』 sql函數如何返回數據集
1,把每行數據加 換行符ASCII碼(char(10)) 寫入一變數中。然後print 變數名
2,函數後定義表 returns 表(表欄位) ,寫入數據。
『伍』 求助,FineReport使用SQL數據集參數
類似通信、監控行業,每天都有海量數據生成,資料庫表中總數據量非常大,而報表中往往只要當天的幾百條數據就可以了。
如果使用報表參數,就需要先取出所有數據,再進行過濾,取數+過濾,將消耗大量時間;
簡單應用
可以在定義數據集sql的時候,直接使用where條件過濾出需要的數據,從而大大縮短報表取數時間,類似下面的sql:
SELECT * FROM 銷量 where 地區 = '${地區}'
帶公式的應用
數據集sql中可以使用參數宏${}動態地生成過濾條件,${}中的語句在FineReport報表中執行,將${}的執行結果與sql語句拼接起來形成最終的查詢語句,傳遞給資料庫執行,可以使用多個${},如下語句:
SELECT * FROM 訂單 where 1=1 ${if(len(area) == 0,"","and 貨主地區 = '" + area + "'")} ${if(len(province) == 0,"","and 貨主省份 = '" + province + "'")}
${}中可以使用所有內置的FR公式,如if函數;
『陸』 SQL SERVER怎麼獲取存儲過程返回的數據集
數據集可以用print的方式返回。
1、創建測試表、插入數據:
createtabletest
(idintnotnull,
namevarchar(10))
insertintotestvalues(1,'張三')
insertintotestvalues(2,'李四')
表裡數據如圖: