Oracle-12c

在此範例中,我可以使用什麼查詢來獲得所需的結果

  • January 29, 2019

此螢幕截圖顯示了我在執行此查詢以使用 ` 獲得正確的 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 

引用自:https://dba.stackexchange.com/questions/228347