标签: teradata

如何过滤teradata帮助表

我想从teradata的"帮助表"函数生成的数据集中创建一个表,这样我就可以添加关于表的更多信息,并能够按条件过滤行.该表有400多列,因此管理非常方便.我希望能够做类似于创建表的选项,但它不能与帮助表语法一起使用.如果没有将数据导出到excel,然后手动创建表模式并重新导入表,是否有人知道如何将帮助表查询的输出转换为teradata中的表?

teradata

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

在TD的case语句中使用select子句

是否有可能以某种方式在TD的case语句中使用select子句(而不是执行联接)?

我想做这样的事情:

SELECT 
   id, 
   , count(*)
   , (CASE WHEN id IN ANY (SELECT DISTINCT ID FROM PARTICIPANTS_TABLE)                             
        THEN 1 ELSE 0 
      end) AS participant 
FROM EVERYONE_TABLE
GROUP BY id
Run Code Online (Sandbox Code Playgroud)

我得到的错误是“ CASE表达式的WHEN子句中的非法表达式”。

sql teradata

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

Oracle中的Qualify子句

我正在从事Teradata到Oracle的迁移项目。我如何修改以下在Teradata中使用QUALIFY的查询。

//查询1

   SELECT S.ID  as Id,
          S.MP_CD as Code,
          S.GM_CD  as GmCode,
          S.GM_MSR_NBR as Mea_Year, 
          S.STTS_CD as YearCode,
          S.TRMNTN_DTM as TerminationDate 
     FROM PD.RVY S, LOAD_LOG TLL 
    WHERE S.UPDTD_LOAD = TLL.LOG_KEY AND TLL.BLSH_CD = 'Y' AND S.STTS_CD IN ( 'C', 'P' ) 
  QUALIFY ROW_NUMBER () OVER (PARTITION BY S.GM_CD ,S.MP_CD ,S.GM_MSR_NBR,S.STTS_CD 
                              ORDER BY S.SO_DTM DESC 
                              ) = 1;
Run Code Online (Sandbox Code Playgroud)

//查询2

  SELECT SP.ID,
         SP.SO_DTM,
         SP.TAX_ID,
         SP.USER_ID,
         SP.FRST_NM,
         SP.LAST_NM,
         SP.PHONE_NBR,
         QSRP.TAX_ID,
         QSRP.ROW_ID,
         MAX(SP.SO_DTM) OVER (PARTITION BY SP.ID, SP.TAX_ID) MAX_SO_DTM       
    FROM VOPR_RMSY SP,VOPR_RMSY_SPNS QSRP
    WHERE …
Run Code Online (Sandbox Code Playgroud)

teradata oracle11g

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

如何分组使用存在

我有下表

personid talent
1        swim
2        play
1        play
1        swim
2        play
3        swim
3        swim
2        play
Run Code Online (Sandbox Code Playgroud)

因此,人1可以游泳和玩耍.人2只能玩.人3只能游泳.

我需要得到以下结果

personid  talent
1        both
2        play
3        swim
Run Code Online (Sandbox Code Playgroud)

我怎么能用这个exists呢?


我试过了

SELECT DISTINCT personid, 
CASE WHEN (EXISTS(
SELECT * FROM mytable
 -- I got stuck
Run Code Online (Sandbox Code Playgroud)

PS:我有一个很长的解决方案..但我不喜欢它,因为它很长

SELECT DISTINCT dis2.personid , CASE WHEN talcount = 2 THEN 'both'
ELSE talent END AS talent 
FROM
(
SELECT personid , COUNT(talent) talcount
FROM 
(
SELECT DISTINCT personid , talent 
FROM my_table …
Run Code Online (Sandbox Code Playgroud)

sql teradata

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

IN子句中的空值 - Teradata

这是我的Table1

personid
1
?
2
3
4
?
6
Run Code Online (Sandbox Code Playgroud)

这是我的查询

select * 
from table2
where personid not in 
(
select personid
from table1
)
Run Code Online (Sandbox Code Playgroud)

结果是 nothing


这是我的第二个查询

select * 
from table2
where personid not in 
(
select personid
from table1         
where personid is not null
)
Run Code Online (Sandbox Code Playgroud)

结果是 ok


问题:为什么第一个查询不起作用?我看不出任何逻辑问题.是的,是否可以null提升teradata?

sql teradata

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

sqoop将数据从Teradata传输到HDFS

sqoop将数据从Teradata传输到HDFS:获取如下错误:-bash-4.1 $ sqoop import --connection-manager com.cloudera.sqoop.manager.DefaultManagerFactory --driver com.teradata.jdbc.TeraDriver \

--connect jdbc:teradata://dwsoat.dws.company.co.uk/DATABASE=TS_72258_BASELDB\--username userid -P --table ADDRESS --num-mappers 3\--target-dir/user/nathalok /地址警告:/apps/cloudera/parcels/CDH-5.1.3-1.cdh5.1.3.p0.12/bin/../lib/sqoop/../accumulo不存在!Accumulo进口将失败.请将$ ACCUMULO_HOME设置为Accumulo安装的根目录.14/10/29 14:00:14 INFO sqoop.Sqoop:运行Sqoop版本:1.4.4-cdh5.1.3 14/10/29 14:00:14 WARN tool.BaseSqoopTool:在命令行设置密码是不安全的.考虑使用-P代替.14/10/29 14:00:14错误sqoop.ConnFactory:Sqoop无法正确创建连接管理器.有些连接器支持显式--driver,有些则不支持.请尝试指定--driver或将其保留.14/10/29 14:00:14 ERROR tool.BaseSqoopTool:创建数据库管理器时出错:java.io.IOException:java.lang.NoSuchMethodException:com.cloudera.sqoop.manager.DefaultManagerFactory.(java.lang.String, org.apache.sqoop(orn.apache) .tool.ImportTool.init(ImportTool.java:84)atg.apache.sqoop.tool.ImportTool.run(ImportTool.java:494)org.apache.sqoop.Sqoop.run(Sqoop.java:147)at at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)org.apache.sqoop.Sqoop.runTool(Sqoop.java: 222)org.apache.sqoop.Sqoop.runTool(Sqoop.java:231)at org.apache.sqoop.Sqoop.main(Sqoop.java:240)引起:java.lang.NoSuchMethodException:com.cloudera.sqoop java的java.lang.Class.getConstructor0(Class.java:2810)中的.manager.DefaultManagerFactory.(java.lang.String,com.cloudera.sqoop.SqoopOptions).lang.Class.getDeclaredConstructor(Class.java:2053)at org.apache.sqoop.ConnFactory.getManager(ConnFactory.java:151)... 9更多

-bash-4.1 $

任何帮助将不胜感激.

hadoop hive teradata hdfs sqoop

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

在Teradata SQL Assistant查询窗口中使用固定宽度字体?

真的很简单问:

Teradata SQL Assistant的代码默认字体是可变宽度.这对于格式化和可读性等原因而言是令人沮丧的.是否可以将字体更改为Courier New在"查询"窗口类似内容?谷歌搜索,仔细阅读选项菜单,查找Teradata文档并没有产生任何结果......

请帮我用等宽字体编码!

sql teradata

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

SQL查询以选择每个组的百分比

我有一个名为Grades的表,其中包含每年的结果。
我想选择每年得分超过70%的学生所占的百分比。
像2012年一样,每100个国家中就有40个获得了70%以上的收入。因此,2012年的百分比为40%。
我在子查询中做到了,但我想知道是否可以不使用子查询。
我正在使用Teradata版本6,该版本支持所有基本sql查询。
我的表架构是。

Table name: Grades<br>
Columns: Name, Marks, Year.
Run Code Online (Sandbox Code Playgroud)

我能做的最好的事情是:

select (count(marks)/count(*))*100.0
from Grades
where marks > 70
Group by year;
Run Code Online (Sandbox Code Playgroud)

sql database group-by teradata

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

如何在单个Teradata查询中输出不同的第25,第50,第75百分位数?

几个小时后,我被困在类似的东西上,并在一个Teradata查询中输出了一个不那么混乱的代码,用于输出25%,50%,75%的百分位数.可以进一步扩展以产生" 5点总结 ".根据您的人口估计值,最小和最大变化静态值.

有人要求优雅的方法.分享我的.

这是代码:

SELECT MAX(PER_MIN) AS PER_MIN,
       MAX(PER_25) AS PER_25,
       MAX(PER_50)  AS PER_50,
       MAX(PER_75)  AS PER_75,
       MAX(PER_MAX) AS PER_MAX
FROM (SELECT CASE WHEN ROW_NUMBER() OVER(ORDER BY DURATION_MACRO_CURR ASC) = CAST(COUNT(*) OVER() * 0.01 AS INT) THEN DURATION_MACRO_CURR END AS PER_MIN,
             CASE WHEN ROW_NUMBER() OVER(ORDER BY DURATION_MACRO_CURR ASC) = CAST(COUNT(*) OVER() * 0.25 AS INT) THEN DURATION_MACRO_CURR END AS PER_25,
             CASE WHEN ROW_NUMBER() OVER(ORDER BY DURATION_MACRO_CURR ASC) = CAST(COUNT(*) OVER() * 0.50 AS INT) THEN DURATION_MACRO_CURR END AS PER_50 …
Run Code Online (Sandbox Code Playgroud)

sql ranking teradata percentile quartile

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

我尝试创建有序SQL表时出错

我正在尝试使用ORDER BY在SQL中创建一个volatile表,我收到一个错误.

CREATE VOLATILE TABLE orderd_dates AS
(SELECT * FROM date_table
ORDER BY id_date)
with data primary index (id_date) on commit preserve rows;
Run Code Online (Sandbox Code Playgroud)

错误是:子查询中不允许ORDER BY.

如果我不能使用order by,如何创建一个有序的易失性表?

sql subquery sql-order-by create-table teradata

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