假设我有一个名为"myPlayerInfo"的表,其中包含以下行
'player name' 'number of goals'
'john' '10'
'martin' '20'
'jen' '20'
Run Code Online (Sandbox Code Playgroud)
Q1.如何编写一个打印新列的SQL查询,该列是"目标数"列的总和?
'player name' 'number of goals' 'Total goals by all players'
'john' '10' '50'
'martin' '20' '50'
'jen' '20' '50'
Run Code Online (Sandbox Code Playgroud)
Q2.如何编写一个sql查询来打印一个新列,该列是每个玩家在第一季度完成的总目标列中得分的百分比.?
'player name' 'number of goals' '% goals scored' 'Total goals by all players'
'john' '10' '20' '50'
'martin' '20' '40' '50'
'jen' '20' '40' '50'
Run Code Online (Sandbox Code Playgroud) 我正在尝试为已经派生的列"Sub1"设置默认文本值这可能吗?我已经使用值0为要派生的列创建了占位符.如果它很重要,我正在Teradata中工作.....谢谢!
select c_clm
,dt.Claimant_Name
,dt.i_ssn
,0 as "Time_Period"
,0 as "Unit_ID",
/*,idv.C_PDT AS "Product"
,er.C_FRM_POL AS "Group Product",*/
(case
when idv.c_pdt is null then 'GLTC'
else idv.c_pdt
end) as "Product_ID"
,c_ams_clm as "DBS_UserID"
,upc_indiv_org_id as "DBS_EEID"
,0 as "Categ"
,0 as Categ_sort
,0 as "Sub1"
,0 as "Sub1_Sort"
,0 as "Sub2"
,0 as "Sub2_Sort"
,0 as "MTD_Num"
,0 as "MTD_Denom"
,dt.i_pol as "Policy_Number"
,COALESCE (erpol.n_pol,idv.n_pol, ks.n_pol)
Run Code Online (Sandbox Code Playgroud) 让我们假设我知道特定数据库记录何时更新.我知道某个地方存在所有执行的SQL的历史记录,可能只有DBA才能访问.如果我可以访问此历史记录,我可以从中查询查询文本LIKE '%fieldname%'.虽然这几乎可以提取包含我正在寻找的字段名称的任何事务查询,但这是一个很好的开始,特别是如果我可以将记录集过滤到特定的日期/时间范围.
我已经发现了这个dbc.DBQLogTbl视图,但它似乎并没有像我期望的那样工作.是否有另一个视图包含我要查找的信息?
我正在尝试从差异表中进行多个选择,并且只将结果放在一列中。
SELECT COUNT(*) FROM tb1 union
SELECT COUNT(*) FROM tb2 union
SELECT COUNT(*) FROM tb3;
Run Code Online (Sandbox Code Playgroud)
输出应该像这样:
593643
18103600
0
Run Code Online (Sandbox Code Playgroud)
这样的问题是结果按降序排列。如下所示:
0
593643
18103600
Run Code Online (Sandbox Code Playgroud)
我希望结果像我输入的select语句一样。请指教。顺便说一句,我正在使用Teradata。谢谢。
我正在使用teradata来吸引一些员工
select eventid, personid
.........
.......
我需要select仅基于eventid参数来区分值,所以我想应用于distincteventid,并让personid成为任何类型的第一个值
我怎样才能做到这一点?
如果我做
select distinct eventid, personid
............
.........
这将根据两个参数进行区分
表是
id col1 col2
1 former good
2 future fair
3 now bad
4 former good
.............
Run Code Online (Sandbox Code Playgroud)
目标:我只需要选择那些累积分数高于0.8的行
1)如果col1 ='前'那么该行获得0.2分,如果'现在'那么'0.7',如果'未来'那么0.3
2)如果col2 ='good'那么该行得到0.8分,如果'坏'那么'0.1',如果'公平'则为0.5
因此,我需要在WHERE子句中分配数值.我想避免在SELECT中更改值,因为我需要用户能够看到标签('good','now'等)而不是数字.
我怎样才能做到这一点?
SELECT *
FROM mytable
WHERE ?
Run Code Online (Sandbox Code Playgroud) 很久以前,我被告知我不应该收集关于Teradata UPI的统计数据,但我从来没有理解其中的原因.它可能与我们当时运行的版本有关.它也可能是UPI不需要统计数据所以收集它们是浪费时间.
我的问题是:既然我们正在使用TD 13.10(并且很快转向TD 14),我应该继续这种做法吗?如果是这样,那么表的大小是否有所不同,例如1000行AVT表与1亿行详细信息表,两者都有连接操作广泛使用的单列UPI?
任何特定的Teradata文档参考将不胜感激.
我在Teradata中将秒转换为小时有点问题。
CAST((TRUNC(seconds/3600) (FORMAT '99')) AS VARCHAR(10)) ||':'||
CAST((TRUNC((seconds MOD 3600)/60) (FORMAT '99')) AS VARCHAR(10)) ||':'||
CAST((TRUNC(seconds MOD 60) (FORMAT '99')) AS VARCHAR(10)) AS SecToHours
Run Code Online (Sandbox Code Playgroud)
我需要将00:00:00格式的秒数转换为分钟和小时,但是现在如果我得到100个小时而不是100个小时,则会得到结果**我不希望格式为“ 999”。
期待的结果:
小时:分钟:秒
00:00:59
00:59:59
09:59:59
99:59:59
100:59:59
有可能吗?
下面粘贴的是一个示例SQL代码,它使用where子句中的case语句,但它抛出一个语法错误,说"在mrktng_pckge_typ_cd和NOT关键字之间期待关键字如END".
CASE WHEN exc_ind=1 THEN
mrktng_pckge_typ_cd NOT IN ('a','b','c','d') ELSE NULL END
我一直在谷歌搜索和搜索这个网站,但无法找到这个简单问题的答案.
如何在Teradata中列出或选择表格的所有列?