以下查询:
SELECT
year, id, rate
FROM h
WHERE year BETWEEN 2000 AND 2009
AND id IN (SELECT rid FROM table2)
GROUP BY id, year
ORDER BY id, rate DESC
Run Code Online (Sandbox Code Playgroud)
收益率:
year id rate
2006 p01 8
2003 p01 7.4
2008 p01 6.8
2001 p01 5.9
2007 p01 5.3
2009 p01 4.4
2002 p01 3.9
2004 p01 3.5
2005 p01 2.1
2000 p01 0.8
2001 p02 12.5
2004 p02 12.4
2002 p02 12.2
2003 p02 10.3
2000 p02 8.7
2006 p02 …Run Code Online (Sandbox Code Playgroud) 如何获得包含每个分组集的最大值的行?
我在这个问题上看到了一些过于复杂的变化,没有一个有很好的答案.我试图把最简单的例子放在一起:
给出如下表格,包含人,组和年龄列,您将如何获得每组中最老的人?(组内的一个平局应该给出第一个字母结果)
Person | Group | Age
---
Bob | 1 | 32
Jill | 1 | 34
Shawn| 1 | 42
Jake | 2 | 29
Paul | 2 | 36
Laura| 2 | 39
Run Code Online (Sandbox Code Playgroud)
期望的结果集:
Shawn | 1 | 42
Laura | 2 | 39
Run Code Online (Sandbox Code Playgroud) 我想在一个查询中返回每个部分的前10条记录.任何人都可以帮忙解决这个问题吗?Section是表中的一列.
数据库是SQL Server 2005.我想按输入的日期返回前10名.部分是业务,本地和功能.对于一个特定日期,我只想要前(10)个业务行(最近的条目),前(10)个本地行和前(10)个特征.
我有一个项目数据库.每个项目都使用类别表中的类别ID进行分类.我正在尝试创建一个列出每个类别的页面,在每个类别下面我想要显示该类别中的4个最新项目.
例如:
宠物用品
img1
img2
img3
img4
Run Code Online (Sandbox Code Playgroud)
宠物食品
img1
img2
img3
img4
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过查询每个类别的数据库轻松解决这个问题,如下所示:
SELECT id FROM category
然后迭代该数据并查询每个类别的数据库以获取最新的项目:
SELECT image FROM item where category_id = :category_id ORDER BY date_listed DESC LIMIT 4
我想弄清楚的是,如果我可以使用1个查询并获取所有数据.我有33个类别,所以我想也许这有助于减少对数据库的调用次数.
任何人都知道这是否可行?或者,如果33次通话不是那么大,我应该这么简单.
我正在使用Laravel 5.1,我需要使用多态多对多关系来限制我提取的相关记录的数量.
我想做的是通过parent_id获取类别列表.对于每个类别,我只想拉四个帖子.
我有这个使用下面的代码,但它导致一堆额外的查询.如果可能,我想只打一次数据库.如果可能的话,我想使用Laravel/Eloquent框架,但我愿意接受这方面的任何工作.
@foreach ($categories as $category)
@if ($category->posts->count() > 0)
<h2>{{ $category->name }}</h2>
<a href="/style/{{ $category->slug }}">See more</a>
{-- This part is the wonky part --}
@foreach ($category->posts()->take(4)->get() as $post)
{{ $post->body }}
@endforeach
@endif
@endforeach
Run Code Online (Sandbox Code Playgroud)
PostsController
public function index(Category $category)
{
$categories = $category->with('posts')
->whereParentId(2)
->get();
return view('posts.index')->with(compact('categories'));
}
Run Code Online (Sandbox Code Playgroud)
数据库
posts
id - integer
body - string
categories
id - integer
name - string
parent_id - integer
categorizables
category_id - integer
categorizable_id - integer
categorizable_type …Run Code Online (Sandbox Code Playgroud) 我有这样一张桌子:
Rank Letter 1 A 2 A 3 B 4 A 5 C 6 A 7 C 8 C 9 B 10 C
而且我需要按升序排列的每个字母的前2位:
Rank Letter 1 A 2 A 3 B 5 C 7 C 9 B
我该怎么办?使用GROUP BY获得前1名是相当简单的,但我似乎无法让它适用于多个条目
这是我的完整查询:
SELECT * FROM `clientgroupassign`
LEFT JOIN `clients` ON `clientgroupassign`.clientId = `clients`.clientId
LEFT JOIN `users` ON `carerId` = `userId`
LEFT JOIN
(SELECT * FROM
(SELECT * FROM `contacts` WHERE `contactGroup` = 4 ORDER BY `contactId` DESC)
as `contacts`
GROUP BY (`contactClientId`)
) AS `contacts` ON `contactClientId` = `clients`.clientId
WHERE groupId = 4
ORDER BY `clients`.clientId
Run Code Online (Sandbox Code Playgroud)
第三次连接存在问题导致脚本执行约1分钟.当我在PMA中分开运行时:
SELECT * FROM (SELECT * FROM `contacts` WHERE `contactGroup` = 4 ORDER BY `contactId` DESC) AS `contacts` GROUP BY (`contactClientId`)
Run Code Online (Sandbox Code Playgroud)
执行仍然很长.
我想要的是为contacts第4组中的每个客户端添加一个,最后添加的行(客户端可以在不同的组中). …
I've got to execute a self-joining sql statement on a derived table in mysql. The derived table involves a hairy subquery, and I'm wondering if there's any alternative to actually writing and executing it twice-
SELECT a.* FROM (my hairy subquery) AS a
LEFT JOIN (my hairy subquery) AS a2
ON a.groupname = a2.groupname etc..
Run Code Online (Sandbox Code Playgroud) 我有一个包含“日期”和“频率”字段的模型(频率是整数)。我正在尝试获取每个日期的前5个频率。本质上,我想按日期分组,然后获得每个分组的前5名。
到目前为止,我只检索该组中的前1名:
Observation.channel("channelOne").order('date', 'frequency desc').group(:date).having('frequency = MAX(frequency)')
Run Code Online (Sandbox Code Playgroud)
我想要MAX(frequency)PLUS PER DATE第二,第三,第四和第五大日期。
抱歉,如果这真的很简单,或者我的用语不对;我刚开始使用Rails :)
我有一个带有复合主键(ID,Date)的表,如下所示.
+------+------------+-------+ | ID | Date | Value | +------+------------+-------+ | 1 | 1433419200 | 15 | | 1 | 1433332800 | 23 | | 1 | 1433246400 | 41 | | 1 | 1433160000 | 55 | | 1 | 1432900800 | 24 | | 2 | 1433419200 | 52 | | 2 | 1433332800 | 23 | | 2 | 1433246400 | 39 | | 2 | 1433160000 | 22 | | 3 | …