Hive SQL 嵌套查询使用相似列
Hive SQL nested query use similar column
我有一个查询,其中包含两个具有相似列 'day' 的子查询。我想通过以下方式显示值:
day cnt1 cnt_total
但在我的查询中,它无法识别日期列是相似的,并且将嵌套语句一中的所有行乘以嵌套语句二中的所有行。
有没有办法让它识别出日期列是相似的?
查询如下所示:
SELECT p1.day, p1.count AS cnt1, p2.count AS cnt_total
FROM
(
SELECT day, COUNT(DISTINCT id) AS count FROM table
WHERE 1=1
AND service="service"
AND action="action"
AND path LIKE "%search%"
AND year="2021"
GROUP BY day
) p1,
(
SELECT day, COUNT(DISTINCT id) AS count FROM table
WHERE 1=1
AND service="service"
AND action="action"
AND year="2021"
GROUP BY day
) p2;
您应该可以使用条件聚合来执行此操作,因此只需要一个 SELECT
:
SELECT day,
COUNT(DISTINCT CASE WHEN action = 'mousedown' AND data["path"] LIKE '%go-to-latest-search%' THEN gsid END) AS count,
COUNT(DISTINCT CASE WHEN action = 'impress' THEN gsid END) as cnt_total
FROM hit
WHERE service = 'sauto' AND
year = '2021' AND
month = '07'
GROUP BY day
我有一个查询,其中包含两个具有相似列 'day' 的子查询。我想通过以下方式显示值:
day cnt1 cnt_total
但在我的查询中,它无法识别日期列是相似的,并且将嵌套语句一中的所有行乘以嵌套语句二中的所有行。
有没有办法让它识别出日期列是相似的?
查询如下所示:
SELECT p1.day, p1.count AS cnt1, p2.count AS cnt_total
FROM
(
SELECT day, COUNT(DISTINCT id) AS count FROM table
WHERE 1=1
AND service="service"
AND action="action"
AND path LIKE "%search%"
AND year="2021"
GROUP BY day
) p1,
(
SELECT day, COUNT(DISTINCT id) AS count FROM table
WHERE 1=1
AND service="service"
AND action="action"
AND year="2021"
GROUP BY day
) p2;
您应该可以使用条件聚合来执行此操作,因此只需要一个 SELECT
:
SELECT day,
COUNT(DISTINCT CASE WHEN action = 'mousedown' AND data["path"] LIKE '%go-to-latest-search%' THEN gsid END) AS count,
COUNT(DISTINCT CASE WHEN action = 'impress' THEN gsid END) as cnt_total
FROM hit
WHERE service = 'sauto' AND
year = '2021' AND
month = '07'
GROUP BY day