在本文中,我们将详细介绍SQLServer:从分组依据中选择最后一个结果的各个方面,并为您提供关于sqlserver分组后取最新一条的相关解答,同时,我们也将为您带来关于linq分组依据并选择内部分组
在本文中,我们将详细介绍SQL Server:从分组依据中选择最后一个结果的各个方面,并为您提供关于sqlserver分组后取最新一条的相关解答,同时,我们也将为您带来关于linq分组依据并选择内部分组依据给出错误EFcore、MS Access SQL 从分组数据中选择 MAX、MySQL-选择不在分组依据中的列、php – 如何从mysql结果中选择第一个和最后一个数据行?的有用知识。
本文目录一览:- SQL Server:从分组依据中选择最后一个结果(sqlserver分组后取最新一条)
- linq分组依据并选择内部分组依据给出错误EFcore
- MS Access SQL 从分组数据中选择 MAX
- MySQL-选择不在分组依据中的列
- php – 如何从mysql结果中选择第一个和最后一个数据行?
SQL Server:从分组依据中选择最后一个结果(sqlserver分组后取最新一条)
我正在尝试从2个相似的结果(最旧的结果)中检索最后一个结果
FromUser | ToUser | Message | DateUser1 | User2 | hi | 01/01/2013 20:00User1 | User2 | hi later| 01/01/2013 21:00User5 | User2 | hi | 01/01/2013 20:01User5 | User2 | hi later| 01/01/2013 21:01SELECT CM.FromUser, CM.ToUser, CM.Message, CM.Date, U.UserId, U.UserFullName, U.UserName, U.UserPhotoFROM ConversationMessages AS CM INNER JOIN Users AS U ON U.UserName = CM.FromUserWHERE CM.ToUser = @userORDER BY CM.Date DESC
它应先列出用户5嗨,然后再列出用户1嗨,然后再列出(用户5在日期上较新)。只有最后一行基本上按FromUser
日期分组,然后按日期排序。我对sql没用,在这里尝试了许多建议,但没有任何工作
答案1
您想为此使用窗口函数,而不是group by
:
select FromUser, ToUser, Message, [Date], UserId, UserFullName, UserName, UserPhotofrom (SELECT CM.FromUser, CM.ToUser, CM.Message, CM.Date, U.UserId, U.UserFullName, U.UserName, U.UserPhoto, row_number() over (partition by CM.FromUser, CM.ToUser order by [Date] desc) as seqnum FROM ConversationMessages CM INNER JOIN Users U ON U.UserName = CM.FromUser WHERE CM.ToUser = @user ) sWHERE seqnum = 1ORDER BY CM.Date DESC ;
linq分组依据并选择内部分组依据给出错误EFcore
这是我最能解决您的查询的问题。
var rslt =
(
await
(
from d in db.statMonth.Include(f => f.MasterData)
where d.m_turbine_id == IPAddress.Parse(id)
where d.m_date >= frm
group d by new { d.m_date.Month,d.m_date.Year } into g
orderby g.Key.Month
select new
{
Year = g.Key.Year,Date = g.Key.Month,Production = g.Sum(s => s.m_energy_prod),m_wind_speed = g.Average(s => s.m_wind_speed),Availability = g.Average(s => s.m_availability),Comments = g.Select(s => s.Comments).ToArray(),Countries = g.Select(i => i.Country).ToArray(),}
)
.ToListAsync()
)
.Select(g => new statisticsDaily
{
Year = g.Year
Date = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(g.Date),Production = g.Production,m_wind_speed = g.m_wind_speed,Availability = g.Availability,Comments = String.Join(",",g.Comments),Countries = String.Join(",g.Countries),})
.ToList();
您可以检查一下现在遇到什么错误吗?
MS Access SQL 从分组数据中选择 MAX
如何解决MS Access SQL 从分组数据中选择 MAX?
我有一个包含 3 列(CustomerID、ProductCode、LastDate)的数据集,没有重复项。 LastDate 是该客户最后一次购买产品的日期。
我只需要提取显示给定 CustomerID/ProductCode 的 max(LastDate) 的行。 也就是说,我需要知道哪个客户最近购买了产品。
对 sql 的任何帮助将不胜感激。 詹姆斯
解决方法
您可以尝试以下操作:
它首先获取产品的最后购买日期,然后根据产品代码和最后日期将其加入原始数据集,以检索最后购买产品的客户。
SELECT DISTINCT
dataset.CustomerId,dataset.ProductCode,dataset.LastDate
FROM
dataset
INNER JOIN (
SELECT
ProductCode,MAX(LastDate) LastDate
FROM
dataset
GROUP BY
ProductCode
) last_purchased ON dataset.ProductCode = last_purchased.ProductCode AND
dataset.LastDate = last_purchased.LastDate
告诉我这是否适合您。
,使用 DMax 作为一个值:
CustomerID = TheCustomerIDToFind '' Number
ProductCode = TheProductCodeToFind '' Text
LastDate = DMax("LastDate","YourTable","CustomerID = " & CustomerID & " And ProductCode = ''" & ProductCode & "''"
或对许多人来说:
Select CustomerID,ProductCode,Max(LastDate)
From YourTable
Group By CustomerID,ProductCode
MySQL-选择不在分组依据中的列
如何解决MySQL-选择不在分组依据中的列?
的确,此功能允许一些模棱两可的查询,并且以静默方式返回结果集,并从该列中选择一个任意值。实际上,它往往是该组中的行中的值首先被物理存储。
如果您仅选择功能上依赖于GROUP BY条件中的列的列,则这些查询并不是明确的。换句话说,如果每个用于定义该组的值的“歧义”列中只有一个不同的值,则没有问题。此查询在Microsoft sql Server(和ANSI sql)中将是非法的,即使它不能在逻辑上导致歧义:
SELECT AVG(table1.col1), table1.personID, persons.col4
FROM table1 JOIN persons ON (table1.personID = persons.id)
GROUP BY table1.personID;
另外,MysqL具有sql模式以使其符合标准:ONLY_FULL_GROUP_BY
FWIW,sqlite也允许这些模棱两可的GROUP BY子句,但是它从组的 最后 一行选择值。†
†至少在我测试的版本中。表示 任意性的意思 是,MysqL或sqlite将来都可能更改其实现,并具有一些不同的行为。因此,在这样的模棱两可的情况下,您不应该依赖行为保持当前状态。最好将查询重写为确定性的,而不是模棱两可的。这就是为什么MysqL 5.7现在默认情况下启用ONLY_FULL_GROUP_BY的原因。
解决方法
我正在尝试向先前存在的应用程序中添加功能,并且遇到了如下MySQL视图:
SELECT
AVG(table_name.col1),AVG(table_name.col2),AVG(table_name.col3),table_name.personID,table_name.col4
FROM table_name
GROUP BY table_name.personID;
好,所以有一些聚合函数。您可以选择personID,因为您正在对其进行分组。但是它还会选择不在聚合函数中并且不属于GROUP
BY子句的列。这怎么可能???它是否只是选择一个随机值,因为每个组中的值肯定不是唯一的?
我来自(MSSQL Server),那是一个错误。有人可以向我解释此行为以及为什么它在MySQL中被允许吗?
php – 如何从mysql结果中选择第一个和最后一个数据行?
UPDATE
为了更清楚:我需要有SELECT *因为我需要第一个和第75个用户才能做到MysqL_fetch_assoc所以ASC,DESC,LIMIT不需要回答.
SELECT * from User LIMIT 1 UNION SELECT * from User LIMIT 74,1
编辑
@Kay:PHP在创建后无法更改结果集的内部顺序.
如果查询总是返回75行,那么在其他任何东西之前访问第1和第75的唯一方法是使用mysql_data_seek移动内部结果指针:
$result = MysqL_query('SELECT * from User'); MysqL_data_seek($result,1); $row1 = MysqL_fetch_assoc($result); MysqL_data_seek($result,75); $row75 = MysqL_fetch_assoc($result);
请注意,如果上面跟着一段时间,指针必须重置到合适的位置.
关于SQL Server:从分组依据中选择最后一个结果和sqlserver分组后取最新一条的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于linq分组依据并选择内部分组依据给出错误EFcore、MS Access SQL 从分组数据中选择 MAX、MySQL-选择不在分组依据中的列、php – 如何从mysql结果中选择第一个和最后一个数据行?的相关知识,请在本站寻找。
本文标签: