标签: greatest-n-per-group

MySQL世界数据库试图避免子查询

我正在使用MySQL WORLD数据库.

对于每个大陆,我想返回人口最多的国家的名称.

我能够提出一个有效的查询.尝试查找仅使用连接的另一个查询并避免使用子查询.

有没有办法使用JOIN编写此查询?

SELECT Continent, Name
FROM Country c1
WHERE Population >= ALL (SELECT Population FROM Country c2 WHERE c1.continent = c2.continent);

+---------------+----------------------------------------------+
| Continent     | Nanme                                         |
+---------------+----------------------------------------------+
| Oceania       | Australia                                    |
| South America | Brazil                                       |
| Asia          | China                                        |
| Africa        | Nigeria                                      |
| Europe        | Russian Federation                           |
| North America | United States                                |
| Antarctica    | Antarctica                                   |
| Antarctica    | Bouvet Island                                |
| Antarctica    | …
Run Code Online (Sandbox Code Playgroud)

mysql sql greatest-n-per-group

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

从已加入的MySQL表中选择最新条目

我的数据库中有库存数量信息.
1表,"stock",保存productid(sku)以及它来自的数量和文件名.

另一个表"stockfile"包含所有已处理的文件名以及日期.

现在我需要获得所有产品的最新库存数量值.

这给了我所有产品的所有库存数量(产生300.000条记录)

SELECT stock.stockid,stock.sku,stock.quantity,stockfile.filename,stockfile.date
FROM stock
INNER JOIN stockfile ON stock.stockfileid = stockfile.stockfileid
ORDER BY stock.skuASC

我已经尝试过了:

SELECT*FROM stock
INNER JOIN stockfile ON stock.stockfileid = stockfile.stockfileid
GROUP BY sku
HAVING stockfile.date = MAX(stockfile.date)
ORDER BY stock.skuASC

但它没有用

SHOW CREATE TABLE库存:

CREATE TABLE stock(
stockidbigint(20)NOT NULL AUTO_INCREMENT,
skuchar(25)NOT NULL,
quantityint(5)NOT NULL,
creationdatedatetime NOT NULL,
stockfileidsmallint(5)unsigned NOT NULL,
touchdatedatetime NOT NULL,
PRIMARY KEY(stockid)
)ENGINE …

mysql sql join greatest-n-per-group

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

SQL - 如何选择具有相同ID的多行的第一行(或任何唯一行)?

假设我的查询结果如下:

ID    NAME    Phone
----  ----    -----
1     Bob     111-111-1111
1     Bob     222-222-2222
1     Bob     333-333-3333
2     Stan    555-555-5555
3     Mike    888-888-8888
3     Mike    777-777-7777
Run Code Online (Sandbox Code Playgroud)

我想只返回每个ID值的单行实例.对我来说无关紧要的是我得到的多行中的哪一行 - 集合中的第一行是好的.

所以可能的结果是:

ID    NAME    Phone
----  ----    -----
1     Bob     111-111-1111
2     Stan    555-555-5555
3     Mike    888-888-8888
Run Code Online (Sandbox Code Playgroud)

sql ms-access greatest-n-per-group

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

查询返回每个不同列值的顶级项目

如果我有一个包含以下字段的表格

ID, SomeFK, SomeTime
Run Code Online (Sandbox Code Playgroud)

如何编写查询返回每个的最新/前3项(基于SomeTime)SomeFK.

所以,结果可能看起来像

SomeFK    Sometime
0         2012-07-05 
0         2012-07-04 
0         2012-07-03 
1         2012-07-03 
1         2012-07-02 
1         2012-07-01 
2         2012-07-03 
2         2012-07-02 
2         2012-07-01 
....etc....
Run Code Online (Sandbox Code Playgroud)

返回特定的最新项目SomeFK很容易,但我只是想不出如何为上述做.我也觉得应该死得很简单!

编辑:

道歉,我错过了一些关键信息.这是针对SQL2000的,所以ROW_NUMBER()无法使用!

sql sql-server sql-server-2000 greatest-n-per-group

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

分组与分钟

我有下表

在此输入图像描述

我使用以下查询,我收到了错误消息.我可以确定错误的原因,但我该如何解决呢

select min(id),customer_id,created_at from thunderbolt_orders
  group by customer_id
Run Code Online (Sandbox Code Playgroud)

我需要最小id的customer_id和created_at如何实现它.

sql postgresql greatest-n-per-group

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

每组选择前20行

我有一个有3列的表Item,CityVisitNumber.

在这张表中有很多记录,我需要选择每个城市的前20项(根据他们的访问数量).

例如,如果华盛顿有100个项目,纽约有250个项目,洛杉矶有500个项目,我需要为每个城市选择60个最常访问的行(华盛顿20个,纽约20个,洛杉矶20个)

怎么可能TSQL

t-sql sql-server select group-by greatest-n-per-group

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

运行Postgres查询按一个字段分组并按另一个字段排序

我有一个PostgreSQL表,其中包含以下相关字段:

url
title
created_at
Run Code Online (Sandbox Code Playgroud)

可以有许多行包含相同的URL但标题不同.以下是一些示例行:

www.nytimes.com | The New York Times         | 2016-01-01 00:00:00`
www.wsj.com     | The Wall Street Journal    | 2016-01-03 15:32:13`
www.nytimes.com | The New York Times Online  | 2016-01-06 07:19:08`
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取列出以下字段的输出:

1)url
2)title对应于该唯一created_at
的全部计数的最高值3)titleurl

因此,上面示例的输出行看起来像这样:

www.nytimes.com | The New York Times Online | 2
www.wsj.com     | The Wall Street Journal   | 1
Run Code Online (Sandbox Code Playgroud)

基于我在类似问题上阅读的众多SO帖子,看起来我获得前两个字段(url和最新title)的最佳选择是使用DISTINCT ON:

select distinct on (url) url, title from headlines order by url, …
Run Code Online (Sandbox Code Playgroud)

sql postgresql aggregate greatest-n-per-group window-functions

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

如何在sql中的列中查找最小值

如果我有这样的表格:

id   name   value
1    abc      1
2    def      4
3    ghi      1
4    jkl      2
Run Code Online (Sandbox Code Playgroud)

如何选择一个仍然id, name, value只有最小值的新表.

在这个例子中我需要这个表:

1  abc 1
3  ghi 1
Run Code Online (Sandbox Code Playgroud)

sql postgresql greatest-n-per-group

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

WITH DELETE Redshift语法错误

下面的代码适用于SELECT语句:

WITH 
  smaller_uuid AS (
    SELECT
      id, uuid, email, first_name, last_name, display_name
    FROM stack_users_production.users AS user1
    WHERE EXISTS (
      SELECT
        id, uuid, email
      FROM
        stack_users_production.users AS user2
      WHERE
        user1.id = user2.id AND
        user1.email = user2.email AND
        user1.uuid < user2.uuid
    )
  )

SELECT 
  id, uuid, email, first_name, last_name, display_name
FROM 
  stack_users_production.users
WHERE
  uuid IN (SELECT uuid FROM smaller_uuid);
Run Code Online (Sandbox Code Playgroud)

但是下面的代码不适用于DELETE语句:

WITH 
  smaller_uuid AS (
    SELECT
      id, uuid, email, first_name, last_name, display_name
    FROM stack_users_production.users AS user1
     WHERE EXISTS (
      SELECT
        id, uuid, email …
Run Code Online (Sandbox Code Playgroud)

sql greatest-n-per-group amazon-redshift

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

查阅属性的某些值的记录

我有一个表格,有以下方案(idMovie,流派,标题,评级).

如何查询返回每种类型的最佳评级的十部电影?

我认为可以使用'ORDER BY'和'LIMIT'来解决一个类型的前10名,但我不知道如何为每种类型做到这一点.

免责声明:我是sql的新手.

sql postgresql greatest-n-per-group

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