You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Paul Jackson (JIRA)" <ji...@apache.org> on 2018/01/04 20:32:01 UTC
[jira] [Created] (HIVE-18375) Cannot ORDER by subquery fields
unless they are selected
Paul Jackson created HIVE-18375:
-----------------------------------
Summary: Cannot ORDER by subquery fields unless they are selected
Key: HIVE-18375
URL: https://issues.apache.org/jira/browse/HIVE-18375
Project: Hive
Issue Type: Bug
Components: Query Processor
Affects Versions: 2.3.2
Environment: Amazon AWS
Release label:emr-5.11.0
Hadoop distribution:Amazon 2.7.3
Applications:Hive 2.3.2, Pig 0.17.0, Hue 4.0.1
classification=hive-site,properties=[hive.strict.checks.cartesian.product=false,hive.mapred.mode=nonstrict]
Reporter: Paul Jackson
Priority: Minor
Give these tables:
{code:SQL}
CREATE TABLE employees (
emp_no INT,
first_name VARCHAR(14),
last_name VARCHAR(16)
);
insert into employees values
(1, 'Gottlob', 'Frege'),
(2, 'Bertrand', 'Russell'),
(3, 'Ludwig', 'Wittgenstein');
CREATE TABLE salaries (
emp_no INT,
salary INT,
from_date DATE,
to_date DATE
);
insert into salaries values
(1, 10, '1900-01-01', '1900-01-31'),
(1, 18, '1900-09-01', '1900-09-30'),
(2, 15, '1940-03-01', '1950-01-01'),
(3, 20, '1920-01-01', '1950-01-01');
{code}
This query returns the names of the employees ordered by their peak salary:
{code:SQL}
SELECT `employees`.`last_name`, `employees`.`first_name`, `t1`.`max_salary`
FROM `default`.`employees`
INNER JOIN
(SELECT `emp_no`, MAX(`salary`) `max_salary`
FROM `default`.`salaries`
WHERE `emp_no` IS NOT NULL AND `salary` IS NOT NULL
GROUP BY `emp_no`) AS `t1`
ON `employees`.`emp_no` = `t1`.`emp_no`
ORDER BY `t1`.`max_salary` DESC;
{code}
However, this should still work even if the max_salary is not part of the projection:
{code:SQL}
SELECT `employees`.`last_name`, `employees`.`first_name`
FROM `default`.`employees`
INNER JOIN
(SELECT `emp_no`, MAX(`salary`) `max_salary`
FROM `default`.`salaries`
WHERE `emp_no` IS NOT NULL AND `salary` IS NOT NULL
GROUP BY `emp_no`) AS `t1`
ON `employees`.`emp_no` = `t1`.`emp_no`
ORDER BY `t1`.`max_salary` DESC;
{code}
However, that fails with this error:
{code}
Error while compiling statement: FAILED: SemanticException [Error 10004]: line 9:9 Invalid table alias or column reference 't1': (possible column names are: last_name, first_name)
{code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)