資料庫--SQLServer--如何找到包含某列最大值的那一行
1.使用分析函式max,找出每個user_id分組的max(my_date)。
1 2 3 4 5 6 7 8 9 10 11 12 |
select
user_id,
my_value,
my_date
from
(
select
user_id,
my_value,
my_date,
max (my_date)
over (partition by
user_id) max_my_date
from
mytable
)
where
my_date = max_my_date
|
2.使用分析函式row_number,根據user_id分組後按照my_date排序,取每組第一個。
1 2 3 4 5 6 7 8 9 10 11 12 |
select
user_id,
my_value,
my_date
from
(
select
user_id,
my_value,
my_date,
row_number()
over (partition by
user_id order
by
my_date desc )
num
from
mytable
)
where
num = 1
|
3.使用group by和子查詢
1 2 3 4 5 6 7 8 9 10 11 12 |
select
A.user_id,
A.my_value,
A.my_date
from
mytable A,
(
select
user_id,
max (my_date) as
max_my_date
from
mytable
group
by
user_id
)
B
where
A.user_id = B.user_id
and
A.my_date = B.max_my_date
|
4.自關聯加左關聯
1 2 3 4 5 6 |
SELECT
t1.*
FROM
mytable t1
LEFT
OUTER
JOIN
mytable t2
ON
t1.User_Id = t2.User_Id
AND
t1.my_date < t2.my_date
WHERE
t2.User_Id IS
NULL ;
|
這個方法很別緻,深入理解其含義對理解關聯操作很有幫助。它的where條件是找出沒有滿足做關聯條件的記錄。而左關聯的條件是自關聯找出自身user_id下日期大於自己的記錄。不滿足此條件則表明該記錄沒有日期大於自己的記錄,那就是最大日期了。
其實類似的方法還有很多,以上列出具有代表性的方式而已,供學習參考。
文章來自:http://www.sqlparty.com/%E5%A6%82%E4%BD%95%E6%89%BE%E5%88%B0%E5%8C%85%E5%90%AB%E6%9F%90%E5%88%97%E6%9C%80%E5%A4%A7%E5%80%BC%E7%9A%84%E9%82%A3%E4%B8%80%E8%A1%8C%EF%BC%9F/
相關推薦
資料庫--SQLServer--如何找到包含某列最大值的那一行
本題可以有多種方式實現。 1.使用分析函式max,找出每個user_id分組的max(my_date)。 1 2 3 4 5 6 7 8 9 10 11 12 select user_id, my_value, my_date from ( select
求某列最大值資料對應的那一條資料
最近設計一個事務處理,遇到一個Sql語句怎麼都寫不出啦,試了很多次才實現,因此在此記錄分享一下。 業務是這樣的:求書的表中的價格最高的那本書的詳細資訊; 表books中有三個欄位,isbn,boo
linq 多列分組取某列最大值
string[] Names = new string[] { "張三1", "張三2", "張三3", "張三4", }; List<User> Users = new List<User>();
20.找出N*N矩陣中列最大值並輸出
給定程式中,函式fun的功能是:找出N*N矩陣中每列元素中的最大值,並按照順序依次存放於形參b所指的一維陣列中。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #define N 4 void fun(i
(java)leetcode852 山脈陣列的封頂索引(二分查詢法找出陣列中最大值的下標)(Peak Index in a Mountain Array)
題目描述: 我們把符合下列屬性的陣列 A 稱作山脈: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... A[i-1] < A
用 prompt 輸入字串,建立陣列,找出陣列中最大值,問題闡述與解決。
用 prompt 輸入字串建立陣列。用三種方法找出陣列中最大值。問題闡述與解決。 實現目標:輸入一組數,並找出這組數中最大的值。 採用的方法: 雙 for迴圈,列出從小到大(從大到小)順序。 單 for 迴圈,一遍迴圈找出最大值。 使用 Math.max。
6-2 找出矩陣中最大值所在的位置
將1個3*2的矩陣存入1個3*2的二維陣列中,找出最大值以及它的行下標和列下標,並輸出該矩陣 #include<stdio.h> int main(void) {int col, i, j, row;int a[3][2];//將輸入的數存入二維陣列 for(i = 0
python利用pandas找出矩陣的最大值或最小值及其對應的位置
import pandas as pd text = pd.DataFrame([[21,45,78],[23,56,89],[14,25,36],[47,58,69]]) # 先建立一個矩陣 print(text) Out[1]: 0 1 2 0 21 45 78 1
同時找出陣列的最大值和最小值,要求時間複雜度為o(n)
#include <stdio.h> void max_min(int A[],int n,int& max,int& min) { int i; if(n%2==0) { if(
求陣列每列最大值
#實現程式碼 var arr=[ [1,2,5,9], [4,6,2,8], [2,5,7,4], [3,7,8,1], [0,4,1,2] ]; //建立一個空陣列,用來接收每一列最大數所在的行數 var hang=[]
Python獲取二維矩陣每列最大值
因為做專案中間有一個很小的環節需要這個功能,所以就寫了一個簡單的小函式,下面是具體實現: #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 ''' def get_max_value(mart
hdu4006 找第k個最大值 優先佇列
題意 不斷地向數組裡面加數,然後有多次詢問,每次詢問要求輸出該陣列中第k大的數 陣列長度和詢問次數不超過1e6 思路 此題貌似有多種做法,用樹狀陣列和線段樹也能做. 用優先佇列來做的話,就是維護有k個數的最小堆,每次詢問是將堆頂的數輸出即可 #include<
Oracle中取多個欄位多個列最大值最小值的方法
已知表TB的資料如下 SQL> select * from tb; ID CHINESE MATH ENGLISH ---------- ---------- ---------- ---------- 1001 89 98 87 1
【Hive】多列最大值 或 陣列最大值
max()函式是針對單列多行求最大值。當我們想要對多列同行之間進行比較時,可以嘗試以下辦法: 1.先將數值轉換成陣列array(),再對陣列排序sort_array(),通過負值使其為降序; select -sort_array(array(-a,-b,-c))[0]
堆&&堆排序&&N個數中找出K個最大值&&優先順序佇列
學習二叉樹後,有一個東西需要我們來關注下,就是堆,對於堆,來說我們可以把堆看作一顆完全二叉樹。這裡我們也可以叫做二叉堆。 二叉堆滿足二個特性: 1.父結點的鍵值總是大於或等於(小於或等於)任何一個子節點的鍵值。 2.每個結點的左子樹和右子樹都是一個二叉堆(
PHP 如何在txt裏查找包含某個字符串的那一行?
包含 div handler 字符串 bstr int txt sub substr <?php $handler=fopen("1.txt","r"); while(!feof($handler)) { $m = fgets($handler,409
oracle 資料庫對於多列求最大值
1.案例: SELECT GREATEST('36', '55', '34') V_MAX, LEAST('36', '55', '34') V_MIN FROM DUAL Oracle比較一列的最大值或者最小值,我們會不假思索地用MAX和MIN函式,但是對於比較一行的最大值
mybatis怎麼返回某列的最大值
今天在專案中遇到需要獲取到資料庫中最大的id值到前臺顯示,好久不寫程式碼的我,竟然忘記怎麼寫了,真是丟人啊。 所以呢,寫出來之後的我,要在這裡記錄一下。 Mapper檔案中sql: <selec
DataTable某一列的最大值
1.datatable.compute("max(列名)","") 2.Column.Expression = "max(資料列名)"; 3.用檢視來排序 Dim firstView As DataVi
mybatis。插入語句如何插入資料庫中某一欄位最大值(純sql實現)
<insert id="inserts"> <selectKey keyProperty="ID" ORDER="BEFORE" resultType="java.lang.I