我如何使用sql查询以天格式获取中位数,以下是我的表数据
mobile date
- 9833099876 -2019-01-23
- 9833099876 -2019-02-02
- 9833099876 -2019-02-02
- 9833099876 -2019-03-16
- 9833099876 -2019-05-20
并且所需的输出应该是这样的:
9833099876 32 -->this is only for example , not the answer
回答如下:与cte(con_mob,billsDate)如(选择DISTINCT contact_mobile,bills_date从销售数据哪里contact_mobile不为空AND bills_date不为空)
选择con_mob,meadian_value =案件什么时候count(billsDate)%2 = 0然后DATEDIFF(DAY,CONVERT(date,MIN(billsDate)),CONVERT(日期,MAX(billsDate)))其他DATEDIFF(DAY,CONVERT(date,MIN(billsDate)),CONVERT(日期,MAX(billsDate)))/ 2结束来自(选择con_mob,billsDate,DENSE_RANK()OVER(分区依据con_mob ORDER BY billsDate)AS Rownum,COUNT(billsDate)OVER(按con_mob划分)AS vstcnt从中心) 一种哪里vstcnt%2 = 0 AND Rownum in(vstcnt / 2,vstcnt / 2 +1)要么vstcnt%2 <> 0 AND Rownum in(vstcnt / 2,vstcnt / 2 + 2)通过...分组con_mob拥有COUNT(billsDate)> 1