簡體   English   中英

SQL查詢以比較計數大於1的記錄

[英]SQL query to compare records having count greater than 1

我有一個表,其中包含id和answer列,看起來像:

| id | answer |
| 1  |  Yes   |
| 2  |   No   |
| 3  | Unsure |
| 1  |  No    |
| 1  | Unsure |
| 3  |  Yes   |
| 2  | Unsure |
| 4  | NULL   |
| 4  | Unsure |
| 4  | No     |

我想以某種方式輸出,如果用戶id曾經回答“是”(例如id 1),那么最終輸出應該為1。但是,如果用戶id回答“否”和“ NULL”,則輸出應該為“否”此外,如果用戶ID已回答“不確定”和“否”或“不確定”和“空”,則輸出應為“不確定”

最終輸出:

| id | answer |
| 1  | Yes    |
| 2  | Unsure |
| 3  | Yes    |
| 4  | Unsure |
CASE WHEN (.Answer IS NULL OR .Answer = 'No') THEN 'NO' ELSE (.Answer) END AS 'FILTERED ANSWER'

能幫到您嗎?

您要為此使用聚合和case邏輯:

select id,
       (case when sum(case when Answer = 'yes' then 1 else 0 end) > 0
             then 'yes'
             when sum(case when answer = 'unsure' then 1 else 0 end) > 0
             then 'unsure'
             else 'no'  -- or perhaps max(answer)
        end) as answer
from t
group by id;

如果唯一的可能性是“是”,“否”,“不確定”和NULL,那么可以采取捷徑:

select id,
       (case when max(Answer) = 'yes'
             then 'yes'
             when max(answer) = 'unsure'
             then 'unsure'
             else 'no'  -- or perhaps max(answer)
        end) as answer
from t
group by id;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM