久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

SQL - 選擇分組行的一個實例

SQL - Select one instance of grouped rows(SQL - 選擇分組行的一個實例)
本文介紹了SQL - 選擇分組行的一個實例的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我有一個對行進行分組的查詢.產(chǎn)品 ID 相同但日期和數(shù)量不同的多行被分組,以便我可以計算數(shù)量、平均價格等的總和.

I have a query where rows are grouped. Multiple rows where the product ID are the same but where date and quantity differs, are grouped so I can calculate the sum of quantities, average prices, etc.

我現(xiàn)在需要添加上次銷售的日期和相應(yīng)的數(shù)量.日期加了MAX(date),怎么加對應(yīng)的數(shù)量?

I now need to add the date when the last sale occurred and the corresponding quantity. I added the date with MAX(date), but how do I add the corresponding quantity?

我使用 MS SQL Server Management Studio.

I use MS SQL Server Management Studio.

示例查詢:

SELECT id,
       SUM(quantity) as 'Total q',
       AVG(price) as 'Avg price',
       MAX(price) as 'Max price',
       MAX(date) as 'Last sale date'
FROM table
WHERE date > 2018
GROUP BY id

原始樣本數(shù)據(jù):

id     quantity    price     date
1      20          2.30      2018-6-2
1      10          2.40      2018-6-4
1      5           2.55      2018-6-10
2      15          12.50     2018-5-20
2      100         7.50      2018-6-1
2      50          10.00     2018-6-12

預(yù)期結(jié)果:

id    total q    avg price   max price   last sale    last q  last p
1     35         2.42        2.55        2018-6-10    5       2.55
2     165        10.00       12.50       2018-6-12    50      10.00

推薦答案

你可以使用窗口函數(shù):

SELECT DISTINCT id,
       SUM(quantity) OVER(PARTITION BY id) as "Total q",
       AVG(price) OVER(PARTITION BY id) as "Avg price",
       MAX(price) OVER(PARTITION BY id) as "Max price",
       MAX(_date) OVER(PARTITION BY id) as "Last sale date",
       FIRST_VALUE(quantity) OVER(PARTITION BY id ORDER BY _date DESC) AS last_q,
       FIRST_VALUE(price) OVER(PARTITION BY id ORDER BY _date DESC) AS last_p
FROM tab
WHERE _date > '2018-01-01';

輸出:

┌────┬─────────┬───────────┬───────────┬─────────────────────┬────────┬────────┐
│ id │ Total q │ Avg price │ Max price │   Last sale date    │ last_q │ last_p │
├────┼─────────┼───────────┼───────────┼─────────────────────┼────────┼────────┤
│  1 │      35 │  2.416666 │      2.55 │ 10/06/2018 00:00:00 │      5 │   2.55 │
│  2 │     165 │ 10.000000 │     12.50 │ 12/06/2018 00:00:00 │     50 │  10.00 │
└────┴─────────┴───────────┴───────────┴─────────────────────┴────────┴────────┘

DBFiddle 演示

這篇關(guān)于SQL - 選擇分組行的一個實例的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Modify Existing decimal places info(修改現(xiàn)有小數(shù)位信息)
The correlation name #39;CONVERT#39; is specified multiple times(多次指定相關(guān)名稱“CONVERT)
T-SQL left join not returning null columns(T-SQL 左連接不返回空列)
remove duplicates from comma or pipeline operator string(從逗號或管道運算符字符串中刪除重復(fù)項)
Change an iterative query to a relational set-based query(將迭代查詢更改為基于關(guān)系集的查詢)
concatenate a zero onto sql server select value shows 4 digits still and not 5(將零連接到 sql server 選擇值仍然顯示 4 位而不是 5)
主站蜘蛛池模板: 成人免费xxxxx在线视频 | 国产精品久久久久久久久久久久午夜片 | 亚洲精品一区二三区不卡 | 国产一区二区三区四区五区加勒比 | 久久草视频 | 精品在线播放 | 国产精品久久久久久 | 99久久精品免费看国产四区 | 日本黄色免费视频 | 男人天堂社区 | 成人在线播放 | 日韩成人中文字幕 | 久久精品小视频 | 国产精品成人一区二区三区 | 国产成人精品一区二区三区视频 | 国产精品毛片一区二区在线看 | 91新视频| 欧美色综合天天久久综合精品 | 久久精品综合 | 亚洲精品1区2区3区 91免费看片 | 高清国产午夜精品久久久久久 | 亚洲九九 | 日本成人综合 | 精品一区电影 | 91视频麻豆 | 羞羞视频一区二区 | 精品av | 国产在线高清 | 国产成人jvid在线播放 | 亚洲精品一区在线观看 | 国产99视频精品免费视频7 | 免费成人在线网 | 最新黄色在线观看 | 久久亚洲欧美日韩精品专区 | 国产成人精品久久二区二区91 | 欧美日韩网站 | 成人久久18免费网站图片 | 国产一区二区三区四区五区加勒比 | 91色在线| 久久精品视频网站 | 日本午夜精品 |