如果我有这张表的例子
-----------------------------
|ID|user_no|order_paid_count|
|---------------------------|
|1 |1 |2 |
|2 |1 |2 |
|3 |1 |2 |
|4 |2 |1 |
|5 |2 |1 |
|---------------------------|
我希望结果是
SELECT o1.*, (SELECT COUNT(*) FROM order AS o2 WHERE o1.user_no=o2.user_no AND o2.paid=yes) as order_paid_count
FROM order as o1
我这样做的查询,但它不起作用..加载这么长时间并没有结果,它像循环无限
def halfhour_bin(time):
return ((time.hour*60)+time.minute)//30
for j in range(len(df)):
df.ix[j,3] = halfhour_bin(df.ix[j,1])
答案 0 :(得分:1)
有一个子查询,用于计算每个user_no的付费订单数量。结果为LEFT JOIN
:
select o1.id, o1.user_no, o2.order_paid_count
from order as o1
left join (select user_no, count(*) as order_paid_count
from order
where paid = 'yes'
group by user_no) as o2
on o1.user_no = o2.user_no
(LEFT JOIN
也包括user_no,但根本没有付费订单。)
答案 1 :(得分:0)
使用DENSE_RANK方法来实现结果:
SELECT ID , user_no , DENSE_RANK() OVER (ORDER BY user_no DESC)
order_paid_count
FROM #Table
ORDER BY user_no