Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

sử dụng lại kết quả của một biểu thức select trong mệnh đề GROUP BY?

Có, chính là . Bạn có thể làm cho nó hoạt động trong Spark SQL theo 2 cách để sử dụng cột mới trong GROUP BYORDER BY mệnh đề

Tiếp cận 1 bằng cách sử dụng truy vấn phụ:

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;

Phương pháp tiếp cận 2 bằng cách sử dụng WITH // thanh lịch:

-- 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;

Thay thế bằng cách sử dụng API Spark DataFrame (wo SQL) với 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. Cập nhật Bảng MySQL bằng tệp CSV

  2. Thứ tự ngẫu nhiên nhất quán trong một truy vấn MySQL

  3. quyền truy cập bị từ chối đối với người dùng @ 'localhost' vào cơ sở dữ liệu ''

  4. Cách phân tích thời gian từ cơ sở dữ liệu

  5. so sánh nhị phân mysql không sử dụng chỉ mục