簡體   English   中英

SQL查詢僅獲取符合條件的條件,該條件基於一個“ group by”下兩個分開的列

[英]SQL query to get only rows match the condition based on two separated columns under one 'group by'

簡單的SELECT查詢將返回如下數據:

從數據中選擇ID,用戶,國家/地區,時間記錄

ID     User      Country   TimeLogged
1      Samantha  SCO       10
1      John      UK         5
1      Andrew    NZL       15
2      John      UK        20
3      Mark      UK        10
3      Mark      UK        20
3      Steven    UK        10
3      Andrew    NZL       15
3      Sharon    IRL        5
4      Andrew    NZL       25
4      Michael   AUS        5
5      Jessica   USA       30

我想返回按ID分組的每個用戶的登錄時間總和,但僅返回ID編號,其中這兩個值Country = UKUser = Andrew都包含在其行中。

因此,上面示例中的輸出為

ID     User      Country   TimeLogged
1      John      UK         5
1      Andrew    NZL       15
3      Mark      UK        30
3      Steven    UK        10
3      Andrew    NZL       15

首先,您需要確定要返回的ID

SELECT ID FROM MyTable WHERE Country='UK' 
INTERSECT
SELECT ID FROM MyTable WHERE [User]='Andrew';

然后,您可以基於此進行過濾以匯總預期的行。

SELECT ID, 
       [User], 
       Country, 
       SUM(Timelogged) as Timelogged 
FROM mytable
WHERE (Country='UK' OR [User]='Andrew')
AND ID IN(  SELECT ID FROM MyTable WHERE Country='UK' 
            INTERSECT
            SELECT ID FROM MyTable WHERE [User]='Andrew')
GROUP BY ID, [User], country;

因此,您已經描述了幾乎完美但不太准確的內容。 您的結果表表明您要使用國家/地區=英國或用戶=安德魯,而不是AND

您需要選擇並分組,然后在其中添加:

Select ID, User, Country, SUM(Timelogged) as Timelogged from mytable
WHERE Country='UK' OR User='Andrew'
Group by ID, user, country

暫無
暫無

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

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