我正在尝试按项目对示例表进行分组,其中.25价格增量和数量之和。
| item_id | qoute | qty | --output table--> | item_id | qoute | qty | |---------|-------|-----| |---------|-------|-----| | 10 | 10.99 | 10 | | 10 | 10.00 | 20 | | 10 | 10.00 | 20 | | 10 | 10.75 | 10 | | 10 | 11.00 | 1 | | 10 | 11.00 | 1 | | 10 | 11.27 | 5 | | 10 | 11.25 | 10 | | 10 | 11.33 | 5 | | 10 | 11.50 | 10 | | 10 | 11.50 | 10 | * Notice how the two quotes of 11.27 and 11.33 are grouped together into 11.25 in the output table
我不知道是否可以使用SQL执行此操作。这将最终实现到Doctrine2 DQL中,但我应该能够轻松地将任何SQL移植到那里。
我真的很想用SQL做到这一点。但如果不可能,我可能想出一种方法来用算法来做。
答案 0 :(得分:1)
以下是使用SQL Server语法的一种方法:
select item_id, floor(quote * 4.0)/4.0 as roundquote, sum(qty) as qty
from t
group by item_id, floor(quote * 4.0)
order by 1, 2
这会将值乘以4,截断为较低的整数,然后除以4.这应该舍入到最接近的$ 0.25。
答案 1 :(得分:1)
select item_id,
floor(qoute)
+(floor(floor((qoute-floor(qoute))*100)/25)*25)/100
as quote,
sum(qty)
from t
group by floor(qoute)
+(floor(floor((qoute-floor(qoute))*100)/25)*25)/100
order by 1,2
答案 2 :(得分:0)
类似的东西:
select item_id, floor(quote*4)/4 as quote_band, sum(qty) from your_table group by item_id, round(quote*4)/4