Oracle-12c
在此範例中,我可以使用什麼查詢來獲得所需的結果
此螢幕截圖顯示了我在執行此查詢以使用 ` 獲得正確的 active_flag 計數時的第一個查詢的結果
select distinct act_flag, empid, emplmnt_date from mytable;
它給了我期望的正確值。但是,當我使用
Select count(distinct act_flag), empid, emplmnt_date from mytable group by empid, emplmnt_date;
. 活動標誌計數不正確。
“DISTINCT”對我來說是一個危險信號。
它表明數據中的重複本來不應該存在,或者有時是對資料結構的誤解,它可能有另一個您不知道的關鍵欄位。
性能方面…
select distinct a, b, c ...
……可能和……一樣“糟糕”
select a, b, c ... group by a, b, c order by a, b, c
看看為什麼你“需要”那裡的“distinct”子句。
這個查詢看起來有點奇怪:
select count(distinct act_flag) empid , emplmnt_date from my table group by empid , emplmnt_date
您正在選擇不同的 act_flag 值計數,別名為“empid”,加上 emplymnt_date 欄位,然後根據“empid”別名值和就業日期對這些結果進行分組。您似乎還從一個名為“my”的表中進行選擇,別名為“table”。 很奇怪。
我期待更多類似的東西:
select empid , emplmnt_date , count( distinct act_flag ) c from my group by empid , emplmnt_date order by empid , emplmnt_date