15個很具代表性的MDX查詢語句

2021-05-21 21:41:19 字數 2600 閱讀 4564

15個很具代表性的mdx查詢語句

出處 www.sqlmag.com 原作者russ whitney    

02.  所有商店中銷售前10名的產品類別有哪些?

listing 2 直接利用topcount()函式查詢銷售前10名的產品。

(這是一種最直接的方法,topcount()函式本身自帶排序(降序)的功能)

listing 2: determining top 10 product categories

說明:查詢銷售前10名的產品類別

select oncolumns,

topcount( [product].[product category].members, 10, ([unit sales]) ) onrows

from sales

查詢結果展示:

03.  在美國,剛剛過去的三個季度裡都有銷售量的食品和飲料有哪些?

(這個查詢也可以理解為「過去三個季度裡食品和飲料銷售量都不為0的產品有哪些?」)。查詢listing 3 示範了如何動態的確定對應的時間集合—這是一項很有價值的技巧。時間集合動態隨著cube資料的更新而改變(也就是說該查詢無論你在什麼時候執行,無論cube的資料作了多少次更新,結果都是最近三個月的資料)。首先,自定義集合lastquarter定義了時間維度中有銷售記錄的最近乙個季度。自定義集合last3quarters在lastquarter的基礎上利用range()函式(實際沒有range()函式,冒號:就是作者說的函式)指定了以lastquarter為最後乙個季度的連續的三個季度。我不直接在last3quarter(原文是lastquarter,我認為是作者筆誤)的定義中使用tail()函式是因為這樣做返回的可能不是連續的三個季度;因為空記錄的季度肯能出現在任何季度,filter()函式只能排除掉空季度。lag()函式結合range()函式,確保了返回的三個季度是連續的。

在這個查詢中,item(0).item(0) 函式取得指定集合的第乙個成員,因為集合在技術上就是一組元組[如:來自不同維度的一系列成員也可以組成乙個元組],所以用第乙個item()函式選擇元組,第二個item()選擇該元組裡的成員。(我們可以這樣理解,集合由元組組成,元組由成員組成)。

listing_03.determining brands sold during the past three quarters.txt

說明:在過去三個季度裡都存在銷售量的商品銷售記錄

withset [lastquarter] as 'tail(filter([time].[quarter].members, not

isempty([time].currentmember)),1)'

set [last3quarters] as ' [lastquarter].item(0).item(0).lag(2) : [lastquarter].item(0).item(0)'

select [last3quarters] oncolumns,

nonemptyunion(descendants( [food], [product].[brand name] ), descendants( [drink],

[product].[brand name] )) onrows

from sales

查詢結果展示:

注:topcount 從集合頂端開始返回指定數目的項,可以選擇首先對集合排序。

例子 select on columns,

topcount(descendants([store].[all stores].[usa],[store].[store city] ), 10, [store sales])   on rows from sales 

subset 從集合中返回元素的子集。

例子 select    oncolumns,

onrowsfrom sales

tail 從集合尾部返回子集。

例子 select    oncolumns,

onrowsfrom sales

lag 返回指定成員的所在維度上的上乙個成員。

例子 with member [measures].[a1] as 'time.currentmember.lag(1).name'  

select on columns , on rows from [sales]

filter 返回根據搜尋條件對集合進行篩選所得到的集合。

例子 select on columns,

on rows from sales   

item 從集合中返回指定元組或者從元組中返回指定成員。

例子 with set kkk as '* }'

member measures.jjj as 'tupletostr(kkk.item(0).item(0))',solve_order=1

select on columns,

on rows

from sales

union 返回兩個集合的並集,可以選擇保留重複項。

例子 select on columns,

union(usa.children, canada.children, all)

on rows from sales 

很有代表性的sql

union all 外連線 相同的資料不覆蓋,展示所有資料 select sid,sum num from select sid,round count sid 2 as num from f pile where manufacture 深圳盛弘 group by sid union all se...

nginx位址重寫 10個代表性例項

什麼是url重寫 url重寫是指將乙個url請求重新寫成 可以處理的另乙個url的過程。為什麼要重寫 更加安全 url可能會暴露資源存放的具體位置,避免被不懷好意的人利用。if return rewrite setif 匹配正則,區分大小寫 匹配正則,不區分大小寫 不匹配正則,區分大小寫 不匹配正則...

幾很有代表性的個for迴圈的練習題

摺紙 折多少次和珠穆朗瑪峰一樣高 1.一張紙的厚度是0.0001公尺,將紙對折,對折多少次厚度超過珠峰高度8848公尺 最後得到結果 2.有一對幼兔,幼兔1個月後長成小兔,小兔1個月後長成成兔並生下一對幼兔,問8個月後有多少對兔子,幼兔 小兔 成兔對數分別是多少。幼兔 1 小兔 0 成兔 0 初始值...