Re: [SQL ] 請問選取最大值的方法
※ 引述《cmccyc (悲慘的生活)》之銘言:
: (針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行)
: 資料庫名稱:teradata或 mssql
: 資料庫版本:
: 內容/問題描述:
: 我有一個消費table
: ID 餐費 旅行 服飾
: ---------------------------------
: a 500 100 200
: b 100 150 300
: c 100 700 300
: 我想要針對每個人選出主要消費的項目
: ID 消費項目
: ----------------
: a 餐費
: b 服飾
: c 旅行
: 請問要如何寫呢
: 謝謝
我的想法可能不是最佳的,但是最直覺的想法,程式部份可能有錯,不過大概
就是那個意思了
如果就只有你說的那些table跟欄位的話,那應該可以這樣
1. 先SELECT INTO消費table每一個資料的MAX到一個temp table
2. 對那個temp table裡面的值回去消費table每個欄位找找,如果有MATCH
的話就把要消費的項目那個table設定成那個column的名字
(如果有一樣的話,只有最後一個名字會被記住)
所以大概是這樣(寫成store procedure)
DECLARE @temptable TABLE
{
ID %DATATYPES%,
MAXVALUE %DATATYPES%
}
其中%DATATYPES%要根據你的消費table而定
然後
SELECT ID, MAX(餐費,旅行,服飾,...) AS MAXVALUE INTO temptable FROM 消費
這樣temptable應該有每個ID對應之最大值
然後(假設你的主要消費的項目table已經存在且有ID)
UPDATE 主要消費的項目 SET 消費項目='餐費' WHERE ID IN (
SELECT 消費.ID FROM 消費, temptable WHEER 消費.ID=temptable.ID AND
消費.餐費 = temptable.MAXVALUE)
這樣一來最大值為餐費的在主要消費的項目table就會被改成餐費
所以依樣畫葫蘆
UPDATE 主要消費的項目 SET 消費項目='旅行' WHERE ID IN (
SELECT 消費.ID FROM 消費, temptable WHEER 消費.ID=temptable.ID AND
消費.旅行 = temptable.MAXVALUE)
UPDATE 主要消費的項目 SET 消費項目='服飾' WHERE ID IN (
SELECT 消費.ID FROM 消費, temptable WHEER 消費.ID=temptable.ID AND
消費.服飾 = temptable.MAXVALUE)
...
大概就是這樣,code可能有錯,不過可以以這邊出發想看看~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.209.4
※ 編輯: retsamsu 來自: 140.113.209.4 (11/12 23:34)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 4 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章