相关疑难解决方法(0)

如何为查询编写T-SQL代码

我需要使用t-sql来查询两个表.第一个表是Books.第二个表是作者.对于每个Book记录,可能有多个子作者记录.我想编写一个查询,只返回为当前Book记录找到的第一个作者记录.表中有数十万条记录,因此我需要查询才能有效.

select a.FirstName, a.LastName, b.BookName
from Books b
left join 
(
    select TOP 1 t.BookID, t.FirstName, t.LastName 
    from Authors t
) a 
    on a.BookID = b.BookID
where b.BookClassification = 2
Run Code Online (Sandbox Code Playgroud)

这个查询不对.我只想在作者中选择与BookID匹配的前1个记录.我怎样才能得到我想要的结果?

sql t-sql sql-server

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

MySQL SELECT 同一列中的多个/所有最大值

假设我得到这张表:

MyTable
+----+-------+
| ID | count |
+----+-------+
| a  | 2     |
| b  | 6     |
| c  | 4     |
| d  | 6     |
| e  | 2     |
+----+-------+
Run Code Online (Sandbox Code Playgroud)

现在我想要回这个:

Result
+----+-------+
| ID | count |
+----+-------+
| b  | 6     |
| d  | 6     |
+----+-------+
Run Code Online (Sandbox Code Playgroud)

我想要具有最多计数值的 ID。因此,如果有多个最大值,我想要全部。我也不知道是否会有多个值,如果有的话,会有多少个。

mysql sql

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

为SQL中的每条记录选择最高值

我是SQL新手,我遇到的问题是我在表中有很多资产的价值.我需要为该表中的每个资产获得最高速度.

我试过搜索谷歌,但我发现了MAX()SQL 的功能.

我不需要,MAX()因为这只会给我一个具有最高价值的记录.我需要每个资产的最高价:

例如

iAssetId fSpeedKPH

1 78

5 77

5 80

8 74

8 81

8 88

8 111

24 71

24 78

24 79

24 79

24 82

24 84

24 90

24 91

24 92

我突出显示了每个资产的最高行,即AssetId = 1,5,24和8

这些是我需要选择的行.

什么是最有效的方式?

我是否必须遍历由我编写的SQL返回的结果集?

编辑:

我的SQL:

DECLARE @dateMinusDay datetime = DateAdd(dd, -1, GetDate())

select vm.iAssetId, max(vm.fSpeedKPH), vm.dtUTCDateTime, ge.sGeofenceName  from VehicleMonitoringLog vm
inner join Geofences ge on ge.iGeofenceId = vm.iGeofenceId

where vm.iGeofenceId != 1 AND vm.fSpeedKPH …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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

获取查询列的最大值

我试图遍历一个查询,以获取最高的createdTime。列instanceId是一个GUID(字符串),这给了我这个错误: 在此处输入图片说明

引用396B3850是instanceId的开头

<cfquery datasource="hostmanager" name="licenses">
SELECT *
FROM licenses
</cfquery>

<cfloop query="licenses">
    <cfquery name="getHighestCreatedTime" dbtype="query">
    SELECT MAX(CREATEDTIME)
    FROM licenses
    WHERE instanceId = #licenses.instanceId#
    AND startDate = #licenses.startDate#
    </cfquery>
</cfloop>
Run Code Online (Sandbox Code Playgroud)

sql coldfusion qoq

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

从每个DEPT中选择具有最大SAL的EMP

我的SQL查询时间很糟糕.我使用的是oracle默认表:

'EMP'表

http://imageshack.us/photo/my-images/850/sinttuloxps.png/

'DEPT'表

http://imageshack.us/photo/my-images/19/assayp.png/


我不想让每个部门薪水最高的员工.

我正在使用SQLPLUS.

提前致谢!

还有代码:

    CREATE TABLE dept (
    deptno numeric(2,0) NOT NULL,
    dname character varying(14),
    loc character varying(13),
    CONSTRAINT dept_pkey PRIMARY KEY (deptno)
);

CREATE TABLE emp (
    empno numeric(4,0) NOT NULL,
    ename character varying(10),
    job character varying(9),
    mgr numeric(4,0),
    hiredate date,
    sal numeric(7,2),
    comm numeric(7,2),
    deptno numeric(2,0),
    CONSTRAINT emp_pkey PRIMARY KEY (empno),
    CONSTRAINT emp_deptno_fkey FOREIGN KEY (deptno) REFERENCES dept(deptno),
    CONSTRAINT emp_mgr_fkey FOREIGN KEY (mgr) REFERENCES emp(empno)
);

INSERT INTO dept (deptno, dname, loc) …
Run Code Online (Sandbox Code Playgroud)

sql oracle greatest-n-per-group

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

SQL从每个组中获取最大值

说我有一张桌子

桌上游戏

date     | track_id  | user_id | rating
-----------------------------------------
20170416 | 1         | 1       | 3  (***)
20170417 | 1         | 1       | 5
20170418 | 2         | 1       | 1
20170419 | 3         | 1       | 4
20170419 | 3         | 1       | 2  (***)
20170420 | 1         | 2       | 5
Run Code Online (Sandbox Code Playgroud)

我想要做的是对于每个唯一的 track_id, user_id 我想要最高评级的行。即产生下面的表格,其中(***)行被删除。

20170417 | 1         | 1       | 5
20170418 | 2         | 1       | 1
20170419 | 3         | 1       | 2
20170420 …
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

MySQL 分组并仅从每个组中选择第一个

我想执行一个查询,仅选择给定组中的最新项目。


在此示例中,我正在跟踪货车:

  • 每次他们返回基地时,check-in都会记录信息 - 里程等......
  • 每次他们送货时,delivery都会记录客户等......

该表让我们了解给定的历史记录van。数据可以通过查询生成或随时存储 - 这不是问题。

 id | checkin_id | delivery_id | van_id
----+------------+-------------+--------
 24 | 15         | NULL        | 3
 25 | NULL       | 28          | 3
 26 | 16         | NULL        | 4
 27 | NULL       | 29          | 3
 28 | NULL       | 30          | 4
 29 | 17         | NULL        | 5
Run Code Online (Sandbox Code Playgroud)

我可以通过使用 - 查询来查看货车的历史记录 ... WHERE van_id=3;

相反,我希望能够获得vans他们最近的“事件”的列表。结果是这样的:

 id | checkin_id …
Run Code Online (Sandbox Code Playgroud)

mysql greatest-n-per-group groupwise-maximum

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

如何选择具有最高价值的标题?

所以在像这样的简单表格中,如何选择具有最高价值的标题?

|_title_||_value_|
|_title1_||_50652_|
|_title2_||_57465_|
|_title3_||_68565_|
|_title4_||_14645_|
Run Code Online (Sandbox Code Playgroud)

就像在这种情况下title3具有最高值,所以我想用SQL代码选择title3,但我不知道如何

我尝试过的:

SELECT title FROM table HAVING MAX(value);
Run Code Online (Sandbox Code Playgroud)

我认为这是我能做到的,但它不起作用

这可能不是那么难,但我完全不熟悉SQL

如果有人可以帮我解决这个问题,我真的很感激

mysql sql

0
推荐指数
3
解决办法
121
查看次数