กลุ่มเปอร์เซ็นไทล์ไฮฟ์ด้วยตัวแปรสองตัว

ฉันมีตารางไฮฟ์ที่ฉันต้องการค้นหาเปอร์เซ็นไทล์ที่ 10 ค่ามัธยฐาน และเปอร์เซ็นไทล์ที่ 90 ของค่าตามสถานที่/วันทำงาน แบบจำลองของตารางอยู่ด้านล่าง ฉันจะเขียนแบบสอบถามเพื่อให้คอลัมน์ตารางผลลัพธ์เป็นตำแหน่ง วันทำงาน เปอร์เซ็นไทล์ที่ 10 ค่ามัธยฐาน และเปอร์เซ็นไทล์ที่ 90 ของ MyValue ได้อย่างไร (สมมติว่าตารางจริงมีสถานที่ที่แตกต่างกันจำนวนมากและหลายรายการต่อสถานที่/ชุดวันทำงาน)

ฉันเหนื่อย:

create table myschema.my_output_table as
select location, weekday,
percentile(MyValue,0.1) over location,weekday as Weekday10pctile
from myschema.my_input_table

ข้อมูลตัวอย่าง:

Location      Weekday       MyValue
Location_A    Monday        2.844958857
Location_A    Monday        1.22455235
Location_A    Monday        2.415189236
Location_A    Monday        2.162431558
Location_A    Tuesday       2.200264375
Location_A    Tuesday       1.218341845
Location_A    Tuesday       1.668882003
Location_A    Tuesday       0.077343061
Location_A    Wednesday     2.977162672
Location_A    Wednesday     2.059018125
Location_A    Wednesday     2.309147998
Location_A    Wednesday     1.241566476

person Ralph    schedule 24.08.2018    source แหล่งที่มา
comment
จนถึงตอนนี้คุณลองทำอะไรไปแล้ว?   -  person hlagos    schedule 24.08.2018


คำตอบ (1)


ใช้ฟังก์ชัน percentile_approx เนื่องจากค่าในคอลัมน์คือ DOUBLE โปรดทราบว่าค่าที่ส่งคืนอาจไม่มาจากชุดข้อมูล

select location, weekday,
percentile(MyValue,0.1) over w as Weekday10pctile,
percentile(MyValue,0.9) over w as Weekday90pctile
from myschema.my_input_table
window w as (partition by location,weekday)

percentile_approx คำอธิบายจากเอกสารประกอบ

เปอร์เซ็นไทล์_ประมาณ(คอลัมน์คู่, p [, B])

ส่งกลับเปอร์เซ็นต์ไทล์ pth โดยประมาณของคอลัมน์ตัวเลข (รวมถึงประเภทจุดทศนิยม) ในกลุ่ม พารามิเตอร์ B ควบคุมความแม่นยำในการประมาณโดยเสียค่าหน่วยความจำ ค่าที่สูงกว่าจะให้ค่าประมาณที่ดีกว่า และค่าเริ่มต้นคือ 10,000 เมื่อจำนวนค่าที่แตกต่างใน col น้อยกว่า B จะให้ค่าเปอร์เซ็นไทล์ที่แน่นอน

person Vamsi Prabhala    schedule 24.08.2018