Cheng Lian created SPARK-13911:
----------------------------------

             Summary: Having condition and order by cannot both have aggregate 
functions
                 Key: SPARK-13911
                 URL: https://issues.apache.org/jira/browse/SPARK-13911
             Project: Spark
          Issue Type: Bug
          Components: SQL
    Affects Versions: 1.6.1, 1.5.2, 1.4.1, 1.3.1, 2.0.0
            Reporter: Cheng Lian


Given the following temporary table:

{code}
sqlContext range 10 select ('id as 'a, 'id as 'b) registerTempTable "t"
{code}

The following SQL statement can't pass analysis:

{noformat}
scala> sqlContext sql "SELECT * FROM t GROUP BY a HAVING COUNT(b) > 0 ORDER BY 
COUNT(b)" show ()
org.apache.spark.sql.AnalysisException: expression '`t`.`b`' is neither present 
in the group by, nor is it an aggregate function. Add to group by or wrap in 
first() (or first_value) if you don't care which value you get.;
  at 
org.apache.spark.sql.execution.QueryExecution.assertAnalyzed(QueryExecution.scala:36)
  at org.apache.spark.sql.Dataset$.newDataFrame(Dataset.scala:58)
  at org.apache.spark.sql.SQLContext.sql(SQLContext.scala:784)
  ... 49 elided
{noformat}

The reason is that analysis rule {{ResolveAggregateFunctions}} only handles the 
first {{Filter}} _or_ {{Sort}} directly above an {{Aggregate}}.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to