SQL GROUP BY 项目,价格递增

标签 sql dql

我正在尝试按项目对下面的示例表进行分组,价格增量为 0.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 来做到这一点。但如果不可能,我也许可以想出一种用算法来实现的方法。

最佳答案

这是一种方法,使用 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 美元。

关于SQL GROUP BY 项目,价格递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12178565/

相关文章:

mysql - 如何获得与可排名数据模型关联的 TOP 10 标签? -- 高级 MySQL 或 ActiveRecord 查询问题

php - 在具有多行的sql中管理子查询

MySQL 存储过程查找最接近匹配的电话通话费率

php - 如何在 Symfony 2.8 中的表单存储库中获取用户对象

symfony - Doctrine2 "order by"在 "group by"之前

symfony - 用于加入属性的 DQL

c# - 我可以看到将 OracleParameters 与 OracleCommand 结合使用时生成的实际查询吗?

java - 加入 Hibernate HQL

mysql - Doctrine 的 left join 行为与普通 sql 不同

sql - Doctrine2 中的 JOIN ON 和 JOIN WITH 有什么区别?