相关疑难解决方法(0)

获取具有列的最大值的行

表:

UserId, Value, Date.
Run Code Online (Sandbox Code Playgroud)

我想得到UserId,每个UserId的max(Date)值.也就是说,具有最新日期的每个UserId的值.有没有办法在SQL中执行此操作?(最好是Oracle)

更新:对任何含糊不清的道歉:我需要获取所有UserIds.但对于每个UserId,只有该用户具有最新日期的那一行.

sql oracle greatest-n-per-group

556
推荐指数
10
解决办法
56万
查看次数

从具有每个不同candidate_id的最近日期的行返回数据

我试图从具有每个不同candidate_id的最新日期的行返回数据.它正确地返回最近的日期(created_unix列),但不返回相应行的其余数据.

SELECT candidate_id, message, max(created_unix), jobpost_id, staffuserid 
    FROM messages 
       WHERE employer_id='$employerid' AND last='company' 
          GROUP BY candidate_id
Run Code Online (Sandbox Code Playgroud)

mysql group-by max

7
推荐指数
1
解决办法
3万
查看次数

使用优先级聚合SQL行

我有一张桌子,里面摆满了不同来源的物品.一些来源可能具有相同的位置(在我的示例中,不同的BBC新闻源将是不同的来源,但它们都来自BBC).每个项目都有一个"唯一"ID,可用于从同一位置识别它.这意味着与网站上相同新闻报道相关但在不同Feed下发布的项目将具有相同的"唯一ID",但这不一定是全球唯一的.

问题是我希望在显示时删除重复项,以便(根据您看到的哪些Feed)您最多只能获得每个故事的一个版本,即使您的两个或三个Feed可能包含指向它的链接.

我有一个sources表格,其中包含有关每个来源location_idlocation_precedence字段的信息.然后,我有一个items包含每个项目,它的表unique_id,source_idcontent.具有相同unique_id和来源的项目location_id最多应出现一次,最高来源location_precedence获胜.

我原以为是这样的:

SELECT `sources`.`name` AS `source`,
       `items`.`content`,
       `items`.`published`
FROM `items` INNER JOIN `sources`
  ON `items`.`source_id` = `sources`.`id` AND `sources`.`active` = 1
GROUP BY `items`.`unique_id`, `sources`.`location_id`
ORDER BY `sources`.`location_priority` DESC
Run Code Online (Sandbox Code Playgroud)

会做的伎俩,但似乎忽略了位置优先级字段.我错过了什么?


示例数据:

CREATE TABLE IF NOT EXISTS `sources` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `location_id` int(10) unsigned NOT NULL,
  `location_priority` int(11) NOT NULL,
  `active` tinyint(1) unsigned NOT NULL …
Run Code Online (Sandbox Code Playgroud)

mysql sql group-by aggregation

0
推荐指数
1
解决办法
2349
查看次数

标签 统计

group-by ×2

mysql ×2

sql ×2

aggregation ×1

greatest-n-per-group ×1

max ×1

oracle ×1