为什么我使用这些 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, 引起的。因此,您正在将计数加入实际值。

如果您将列名更改得更明确,问题可能会更清楚。