首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按金额和总额分组

按金额和总额分组
EN

Stack Overflow用户
提问于 2014-04-08 22:25:10
回答 2查看 74关注 0票数 0

我有以下数据库表:

代码语言:javascript
复制
+----------+----------+---------+-----------+------------+-----------+
| animalID | foodtype | rAmount | rAmtUnits | rFrequency | rFreqUnit |
+----------+----------+---------+-----------+------------+-----------+
| 3498     | BANA     |       3 | lbs.      |          1 | day       |
| 3455     | NUTS     |      10 | lbs.      |          1 | day       |
| 3455     | VEGG     |      20 | lbs.      |          1 | day       |
| 3450     | NUTS     |      10 | lbs.      |          1 | day       |
| 3450     | VEGG     |      20 | lbs.      |          1 | day       |
| 3450     | HAY      |     100 | lbs.      |          1 | day       |
| 3452     | HAY      |     100 | lbs.      |          1 | day       |
| 3452     | NUTS     |      10 | lbs.      |          1 | day       |
| 3452     | VEGG     |      20 | lbs.      |          1 | day       |
| 9490     | BEFR     |       2 | lbs.      |          1 | day       |
| 2899     | BEFR     |       2 | lbs.      |          1 | day       |
| 8393     | ANTS     |      10 | ltr.      |          1 | day       |
| 8899     | EUCL     |       5 | lbs.      |          1 | day       |
| 4883     | FISH     |       4 | lbs.      |          1 | day       |
| 7838     | MICE     |       3 | ea.       |          1 | wk.       |
| 7838     | RATS     |       1 | ea.       |          2 | wk.       |
| 4884     | WPLN     |       3 | lbs.      |          1 | wk.       |
| 1863     | BEFR     |       3 | lbs.      |          1 | day       |
| 2847     | EUCL     |       3 | lbs.      |          1 | day       |
| 4336     | BANA     |       2 | lbs.      |          1 | day       |
| 4336     | NUTS     |       1 | lbs.      |          1 | day       |
| 4336     | CHWM     |       2 | cups      |          1 | day       |
| 2856     | CHWM     |       2 | cups      |          1 | day       |
| 2856     | BANA     |       1 | lbs.      |          1 | day       |
| 2856     | NUTS     |       2 | lbs.      |          1 | day       |
| 8483     | NUTS     |       2 | cups      |          1 | day       |
| 8483     | SEED     |       2 | cups      |          1 | day       |
+----------+----------+---------+-----------+------------+-----------+

我想列出一周所需的食物数量和数量。我有以下查询:

代码语言:javascript
复制
SELECT foodtype,
CASE 
    WHEN rFrequency=1 AND rFreqUnit='day' THEN rAmount*7 
    WHEN rFrequency=2 AND rFreqUnit='wk.' THEN rAmount/2 
    ELSE rAmount END AS rAmount, rAmtUnits 
FROM Rations GROUP BY foodtype;

但是,对于GROUP,rAmount列没有进行汇总,大多数值就会消失。我正在寻找一种方法,这样组将总结所有的价值,将在那里,没有小组的。有什么简单的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-08 22:36:28

看起来,您想要将返回rAmount的表达式包装为一个总和。

看起来你不想把“磅”和“盎司”加在一起,所以看起来你也想用rAmtUnits来“分组”。

考虑到表中的数据,无论rFreqUnit是哪一天,您似乎都希望将数据乘以7。我一点也不清楚你想把什么除以2,如果rFrequency被设置为2,似乎如果你每周需要两次,你就需要rAmount的两倍。如果你每周需要一些"N",你会想把"N * rAmount"包括在总数中。同样,如果您每天需要3件东西,您需要将"3 * rAmount * 7"包括在总数中。

我想你想要这样的东西:

代码语言:javascript
复制
 SELECT r.foodtype
      , SUM(r.rAmount * r.rFrequency * IF(r.rFreqUnit='day',7,1)
        ) AS rAmount
      , r.rAmtUnits
   FROM Rations r
  GROUP BY r.foodtype, r.rAmtUnits

与表达式"IF(r.rFreqUnit='day',7,1)"等效的ANSI标准是:

代码语言:javascript
复制
CASE r.rFreqUnit WHEN 'day' THEN 7 ELSE 1 END
票数 0
EN

Stack Overflow用户

发布于 2014-04-08 22:31:33

不如:

代码语言:javascript
复制
FROM Rations WHERE foodtype = FoodType

把它放在一个函数中(例如javascript,php.)将FoodType作为参数发送到

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22949390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档