저는 SQL (및 모든 종류의 코딩)의 완전한 초보자입니다.하지만 처음으로 로그인 한 사용자의 수를 국가별로 반환하는 기본 쿼리를 작성하려고합니다. 8 월 15 일 이후, 그리고 첫 번째 세션 다음날 다시 온 사용자의 수입니다.SQL 보존 쿼리
utc_timestamp, name, id 및이 이벤트에 대한 여러 매개 변수가 포함 된 json 문자열입니다 (볼 수 있듯이, 나는 그것을 검색하는 데 사용하고 있습니다. 세션 번호 및 국가)
이 쿼리를 실행하면 "Line 5 : 함수 사양에서 'SELECT' 'DISTINCT' 'id'근처의 입력을 인식 할 수 없습니다. select와 DISTINCT 사이에 대괄호를 넣으려고했는데 여전히 같은 오류 메시지가 계속 나타납니다. 그것을 일으키는 것에 대한 어떤 생각? 당신의 도움이들
SELECT
get_json_object(json, '$. User_Country ') AS country
, COUNT(DISTINCT id) AS Users
, COUNT(
SELECT DISTINCT id
FROM events
WHERE EXISTS(
SELECT *
FROM events
WHERE name = "Logged_in"
AND utc_timestamp>(
(
SELECT utc_timestamp
FROM events
WHERE month = 201408
AND name = "Logged_in"
AND get_json_object(json, '$. Session_nb ') = 0
AND utc_timestamp > UNIXTIMESTAMP('2014-08-15 12:00:00')
) + INTERVAL '1 day'
)
)
) AS Retained1
FROM events
WHERE month = 201408
AND name = "Logged_in"
AND get_json_object(json, '$. Session_nb ') = 0
AND utc_timestamp > UNIXTIMESTAMP('2014-08-15 12:00:00')
GROUP BY (get_json_object(json, '$. User_Country '))
ORDER BY (get_json_object(json, '$. User_Country '))
'기본 쿼리'에 대한 정의가 마음에 들었습니다 .-) 어떤 DBMS를 사용하고 있습니까? MySQL, MS SQL Server, PostgreSQL, ...? 질문을 수정하고 태그를 추가 할 수 있습니다. – Josien
예 죄송합니다. 도구 faq가 실제로 hiveql인지 확인해야했습니다. – QuiZzer
'EXISTS' 부질의 색인 된 열을 선택하면 더 나은 성능을 얻을 수 있습니다. 당신이하고있는 것처럼 모든 열 ('SELECT * FROM events')을 선택하는 대신'SELECT id FROM events'와 같은 것입니다. MS SQL Server에서'SELECT '1'FROM events'을 할 것입니다 - RDBMS가 지원하는지 모르겠습니다. –