为什么我使用这些 HQL 查询得不到任何数据?
Why am I not getting any data using these HQL queries?
我使用此查询从用户达到的最高章节中提取最高遭遇:
SELECT COUNT(hc.s) as users, highest_chapter, highest_encounter
FROM
(
SELECT s, MAX(l) as highest_chapter
FROM appl9_evt
WHERE month = "201508" AND st1 = "player" AND st2 = "level_progression" AND n = "level_start"
GROUP BY s
ORDER BY highest_chapter
) hc
INNER JOIN
(
SELECT s, l, MAX(get_json_object(json_data, '$.CurrentEncounter')) as highest_encounter
FROM appl9_evt
WHERE month = "201508" AND st1 = "player" AND st2 = "level_progression" AND n = "level_start"
GROUP BY s, l
ORDER BY highest_encounter
) he ON hc.s = he.s AND hc.highest_chapter = he.l
GROUP BY highest_chapter, highest_encounter
然后我将其另存为 table 并尝试仅获取版本 2.2.1(或任何版本,我认为它称为自连接):
SELECT COUNT(DISTINCT highest.s) as users, highest_chapter, highest_encounter FROM
(
SELECT users as s, highest_chapter, highest_encounter
FROM augusers221
) highest
INNER JOIN
(
SELECT s
FROM appl9_cpu
WHERE v_maj = '2.2.1'
) ver ON highest.s = ver.s
GROUP BY highest_chapter, highest_encounter
ORDER BY highest_chapter, highest_encounter
但是第二阶段有点问题,因为我无法提取任何数据...在此先感谢您查看这面文字墙。
没有示例数据我无法确定,而且列名不友好。但似乎 s
列包含用户名或 ID。那正确吗?
如果是,则不能将其加入 augusers221.users
列,因为它是用户计数。
您可以在第一个查询中加入 appl9_cpu
table,我认为您需要这样做,因为您已经失去了用户 names/IDs第二个查询。
SELECT COUNT(hc.s) as users, highest_chapter, highest_encounter
FROM
(
SELECT s, MAX(l) as highest_chapter
FROM appl9_evt
WHERE month = "201508" AND st1 = "player" AND st2 = "level_progression" AND n = "level_start"
GROUP BY s
ORDER BY highest_chapter
) hc
INNER JOIN
(
SELECT s, l, MAX(get_json_object(json_data, '$.CurrentEncounter')) as highest_encounter
FROM appl9_evt
WHERE month = "201508" AND st1 = "player" AND st2 = "level_progression" AND n = "level_start"
GROUP BY s, l
ORDER BY highest_encounter
) he ON hc.s = he.s AND hc.highest_chapter = he.l
INNER JOIN appl9_cpu cpu ON cpu.s = hc.s
WHERE cpu.v_maj = '2.2.1'
GROUP BY highest_chapter, highest_encounter
如果这没有帮助,那么也许您可以 post 一些示例数据。
据我所见,使用此 fiddle:http://sqlfiddle.com/#!9/1026d/3
问题是由于您稍后在 ON highest.s = ver.s
中将 SELECT COUNT(hc.s) as users,
加入 s
时使用 SELECT COUNT(hc.s) as users,
引起的。因此,您正在将计数加入实际值。
如果您将列名更改得更明确,问题可能会更清楚。
我使用此查询从用户达到的最高章节中提取最高遭遇:
SELECT COUNT(hc.s) as users, highest_chapter, highest_encounter
FROM
(
SELECT s, MAX(l) as highest_chapter
FROM appl9_evt
WHERE month = "201508" AND st1 = "player" AND st2 = "level_progression" AND n = "level_start"
GROUP BY s
ORDER BY highest_chapter
) hc
INNER JOIN
(
SELECT s, l, MAX(get_json_object(json_data, '$.CurrentEncounter')) as highest_encounter
FROM appl9_evt
WHERE month = "201508" AND st1 = "player" AND st2 = "level_progression" AND n = "level_start"
GROUP BY s, l
ORDER BY highest_encounter
) he ON hc.s = he.s AND hc.highest_chapter = he.l
GROUP BY highest_chapter, highest_encounter
然后我将其另存为 table 并尝试仅获取版本 2.2.1(或任何版本,我认为它称为自连接):
SELECT COUNT(DISTINCT highest.s) as users, highest_chapter, highest_encounter FROM
(
SELECT users as s, highest_chapter, highest_encounter
FROM augusers221
) highest
INNER JOIN
(
SELECT s
FROM appl9_cpu
WHERE v_maj = '2.2.1'
) ver ON highest.s = ver.s
GROUP BY highest_chapter, highest_encounter
ORDER BY highest_chapter, highest_encounter
但是第二阶段有点问题,因为我无法提取任何数据...在此先感谢您查看这面文字墙。
没有示例数据我无法确定,而且列名不友好。但似乎 s
列包含用户名或 ID。那正确吗?
如果是,则不能将其加入 augusers221.users
列,因为它是用户计数。
您可以在第一个查询中加入 appl9_cpu
table,我认为您需要这样做,因为您已经失去了用户 names/IDs第二个查询。
SELECT COUNT(hc.s) as users, highest_chapter, highest_encounter
FROM
(
SELECT s, MAX(l) as highest_chapter
FROM appl9_evt
WHERE month = "201508" AND st1 = "player" AND st2 = "level_progression" AND n = "level_start"
GROUP BY s
ORDER BY highest_chapter
) hc
INNER JOIN
(
SELECT s, l, MAX(get_json_object(json_data, '$.CurrentEncounter')) as highest_encounter
FROM appl9_evt
WHERE month = "201508" AND st1 = "player" AND st2 = "level_progression" AND n = "level_start"
GROUP BY s, l
ORDER BY highest_encounter
) he ON hc.s = he.s AND hc.highest_chapter = he.l
INNER JOIN appl9_cpu cpu ON cpu.s = hc.s
WHERE cpu.v_maj = '2.2.1'
GROUP BY highest_chapter, highest_encounter
如果这没有帮助,那么也许您可以 post 一些示例数据。
据我所见,使用此 fiddle:http://sqlfiddle.com/#!9/1026d/3
问题是由于您稍后在 ON highest.s = ver.s
中将 SELECT COUNT(hc.s) as users,
加入 s
时使用 SELECT COUNT(hc.s) as users,
引起的。因此,您正在将计数加入实际值。
如果您将列名更改得更明确,问题可能会更清楚。