首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询问题

问SQL查询问题
EN

Stack Overflow用户
提问于 2009-09-30 01:04:56
回答 2查看 97关注 0票数 0

我正试图在查询中做一些我以前从未做过的事情。它可能需要变量,但我从来没有这样做过,我也不确定它是否需要。

我想要的是获得一份销售清单,首先按代销商分组,然后按月份分组。

我可以这么做,但这里有个转折...我不想要月份,但是第一个月,第二个月,第三个月...

这些不是1月,2月,3月,而是自第一次销售之日起的月数。

在查询中这是可能的吗,或者我需要在我的代码中这样做。

哦,MySQL5.1什么的.

EN

回答 2

Stack Overflow用户

发布于 2009-09-30 01:11:39

当然,只需用SQL编写一个表达式来生成自第一次销售以来的月数(您的意思是第一次销售吗?如果是这样,您将需要一个子查询),既然您说您想要一个销售的分组列表,我假设您并不是真的想要“分组”,您只是想按这些值进行排序或排序)

如果你想要平均销售金额,或者销售计数,或者其他一些销售数据的聚合函数,那么你应该做一个"Group By"...

我不认为你需要担心按月数排序,你可以简单地按每个附属公司的每个销售日期和最新销售日期之间的差异进行排序。(如果要在销售日期排序之后应用第三个排序规则,则需要更加小心。)

代码语言:javascript
复制
   Select * From Sales S
   Order By Affiliate, 
         SalesDate - (Select Min(SalesDate)
                      From Sales 
                      Where Affiliate = S.Affiliate)

或者,如果您真的需要按月差值计算

代码语言:javascript
复制
   Select * From Sales S
   Order By Affiliate, 
         Month(SalesDate) - 
              (Select Month(Min(SalesDate))
               From Sales 
               Where Affiliate = S.Affiliate)
票数 1
EN

Stack Overflow用户

发布于 2009-09-30 01:13:04

这在标准SQL中是可能的,如果你使用我喜欢称之为"SQL gymnastics“的东西。这可以用子查询来完成。

但它看起来非常丑陋,很难维护,真的不值得。您最好使用包装SQL的众多编程语言中的一种(比如PL/ SQL ),或者甚至使用一种可以调用SQL的通用语言(比如Python)。

结果将使用两种语言,但将比仅用SQL编写的相同内容更容易理解。

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

https://stackoverflow.com/questions/1495677

复制
相关文章

相似问题

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