SQL:如何按满足某些条件的字段总和进行排序?

时间:2014-03-24 01:40:37

标签: php mysql sql

我有一个卖物品的商店

每次销售商品时,以下数据都会放入数据库中:

-item_id
-item_count
-bought_value (money spent to buy this item, taking amount into consideration)

现在我想知道PER ITEM中出现的资金百分比

我想对此信息进行排序,但我不完全确定如何执行此操作

我目前拥有的是:

找到进来的总金额:SUM(boughtvalue)

查找所有项目:SELECT DISTINCT item_id

遍历所有项目并使用:SELECT SUM(boughtvalue) WHERE item_id = ...

这会让我得到结果,但他们并没有按照这种方式排序

我正在寻找的是" SELECT DISTINCT item_id ORDER BY SUM(buyvalue)"

我发现此信息的PHP脚本目前显示如下:

15332-0.75640207175834%
18353-0.30683127676158%
18349-0.53882565675204%
18351-0.20954331095913%

我只需要对这些信息进行排序。

4 个答案:

答案 0 :(得分:2)

您正在寻找group by

SELECT item_id, SUM(boughtvalue)
FROM table t
GROUP BY item_id
ORDER BY SUM(boughtvalue) DESC;

答案 1 :(得分:0)

尝试类似:

select item_id, sum(item_count), sum(bought_value) from item_table group by item_id

假设您的表名是item_table

答案 2 :(得分:0)

玩这样的东西

SELECT item_id, 
    (
        SUM( boughtvalue ) /  ( SELECT SUM(boughtvalue) from tbl ) 
    ) as percentvalue 
FROM tbl 
GROUP BY item_id 
ORDER BY percentvalue DESC;

通常我会劝阻子查询,但我认为优化器会优化它。

答案 3 :(得分:0)

尝试:

SELECT item_id, SUM(bought_value) as bought_value FROM item_table GROUP BY item_id ORDER BY bought_value