Mysql
 sql >> база данни >  >> RDS >> Mysql

да използва повторно резултата от израз за избор в клаузата GROUP BY?

Да, така е . Можете да го накарате да работи в Spark SQL по 2 начина, за да използвате нова колона в GROUP BY и ORDER BY клаузи

Приближете 1 с помощта на подзаявка:

SELECT timeHour, someThing FROM (SELECT  
      from_unixtime((starttime/1000)) AS timeHour
    , sum(...)                          AS someThing
    , starttime
FROM
    some_table) 
WHERE
    starttime >= 1000*unix_timestamp('2017-09-16 00:00:00')
      AND starttime <= 1000*unix_timestamp('2017-09-16 04:00:00')
GROUP BY
    timeHour
ORDER BY
    timeHour
LIMIT 10;

Подход 2, използвайки WITH // елегантен начин :

-- create alias 
WITH table_aliase AS(SELECT  
      from_unixtime((starttime/1000)) AS timeHour
    , sum(...)                          AS someThing
    , starttime
FROM
    some_table)

-- use the same alias as table
SELECT timeHour, someThing FROM table_aliase
WHERE
    starttime >= 1000*unix_timestamp('2017-09-16 00:00:00')
      AND starttime <= 1000*unix_timestamp('2017-09-16 04:00:00')
GROUP BY
    timeHour
ORDER BY
    timeHour
LIMIT 10;

Алтернативно използване на API на Spark DataFrame(wo SQL) със Scala:

// This code may need additional import to work well

val df = .... //load the actual table as df

import org.apache.spark.sql.functions._

df.withColumn("timeHour", from_unixtime($"starttime"/1000))
  .groupBy($"timeHour")
  .agg(sum("...").as("someThing"))
  .orderBy($"timeHour")
  .show()

//another way - as per eliasah comment
df.groupBy(from_unixtime($"starttime"/1000).as("timeHour"))
  .agg(sum("...").as("someThing"))
  .orderBy($"timeHour")
  .show()


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализирайте пакета в Codeigniter с множество клауза WHERE

  2. Получаване на връзката неуспешно:php_network_getaddresses:getaddrinfo неуспешно:Име или услуга не са известни

  3. MySQL връща първия ред от обединена таблица

  4. SQL Count записва в рамките на един месец, използвайки unix времеви печат

  5. Как да премахнете водещи и последващи знаци в MySQL