분명히 작은 부분으로 나누어 져야하는 SELECT 문에서 CASE 문을 사용하고 있지만이 작업을 완료하는 데있어 하나의 필드이며 반환하지 않는 지점을 통과했습니다.다른 레코드의 데이터가 필요한 경우 사용
여기에 전체 쿼리를 포기하지 않고, 문제의 요점은 이것이다 :
SELECT
Dogs,
Cats,
COUNT(DISTINCT CASE WHEN my.my_id = 2765 THEN my.data END) AS CountAccounts,
COUNT(DISTINCT CASE WHEN my.my_id = 3347 THEN my.data END) AS CountUpgradedAccounts
my
가 이름 값 쌍의 조회 테이블 인 테이블을 참조. my.my_id = 3347은 "업그레이드 된"계정을 의미하며 데이터 포인트는 계정이 업그레이드 된 날짜입니다. 계정 생성을 나타내는 my.my_id = 2765이고 해당 데이터 포인트가 accountID입니다.
my
그것은 다음과 같습니다 MY_ID = 2765
UserID | my_id | Data
374 | 2765 | 8826
487 | 3347 | 2013-09-01
662 | 2765 | 8826
321 | 2765 | 9213
722 | 3347 | 2014-10-14
852 | 2765 | 8826
487 | 2765 | 9213
, 나는이 관련 있다는 accountIDs의 별개의 수를 싶습니다. 위 테이블에서 2 : Accounts 8826 and 9213입니다.
my
에서 데이터를 가져 오면이 작업이 매우 간단하다는 것을 알고 있습니다. 그러나 my
은 사안을 복잡하게 만드는 방식으로 작성되었습니다.
사실, 여기에 쿼리가 있습니다. 아마도 문제를 쉽게 볼 수 있습니다. SELECT 문에서 선택된 마지막 필드가 문제임을 유의하십시오. 나는 돈, t는 별개의 날짜를 계산하려면, 내가 업그레이드 한 : 내가 부탁 해요 것은 명확하지 않은 경우 나 단어에 도전 미안이 질문을하려고 발견 한
SELECT
sub.name AS ARName,
sub.desc AS ARDescription,
m.name AS MessageName,
m.subj AS MessageDescription,
clk.type AS EventType,
COUNT(DISTINCT clk.eid) AS CountAdmins,
COUNT(DISTINCT CASE WHEN my.my_id = 3347 THEN clk.eid END) AS CountUpgradeAdmins,
COUNT(DISTINCT CASE WHEN my.my_id = 2765 THEN my.data END) AS CountAccounts,
COUNT(DISTINCT CASE WHEN my.my_id = 3347 THEN my.data END) AS CountUpgradedAccounts # <-- THIS LINE IS THE PROBLEM
FROM
bata.sseq seq
INNER JOIN bata.messages m
ON m.id = seq.mid
INNER JOIN bm_arc.clicks208 clk
ON clk.camp = seq.camp
INNER JOIN bemails.cid cid
ON cid.id = clk.eid
INNER JOIN bonfig.sub
ON sub.id = seq.sid
LEFT JOIN bemails.my208 my
ON cid.id = my.eid AND (my_id = 3347 OR my_id = 2765) # only return people who upgraded and accountIDs
WHERE
seq.cid = 208
AND
sub.desc REGEXP '^Home pg free trail (A|B)'
GROUP BY
ARName,
ARDescription,
MessageName,
MessageDescription,
EventType
별개의 accountIDs를 계산합니다. 더 많은 정보가 있으면 알려주세요. 내에서 별개의 해당 데이터 포인트 의 수 사용자 ID 의 그 사용자 ID와 해당 인스턴스를 얻을
를 "3347의 각 인스턴스에 대해 : 내가 무엇을 말해을 요구하고있어 논의에 따라
. 데이터 WHERE my.my_id = 2765 "
'UserId'에 중복 행이 있습니까? – Dan
예 행이 중복됩니다. –
고유 한 사용자입니까? 왜 당신은 UserID를 가지고 accountID를 언급합니까? 스키마에서 사용자를 나타내는 것은 무엇입니까? – Dan