在SAS中,我习惯于PROC,可以用来查询数据库并将数据返回给SAS,或者在数据库中执行SQL代码。例如,从SAS中,我可以使用PROC运行一个pass直通查询,以便从数据库上的另一个表中在我的数据库上创建一个新表。
proc sql;
connect to netezza ( SERVER=X DATABASE=Z AUTHDOMAIN="Y");
execute
(
create table B as
select * from A
)
by netezza
;
quit;
在R中,我能够使用RODBC和如下代码连接和查询数据库:
connect1 <- odbc
我正在作为shell脚本的一部分运行一个netezza进程,在其中一个sql代码中,如果来自两个不同表的行数不匹配,我希望它引发错误或异常。
SQL代码:
/* The following 2 tables should return the same number of rows to make sure the process is correct */
select count(*)
from (
select distinct col1, col2,col3
我有这个sql查询,它工作得很好,但我想把它转换成某种postgresql或netezza等效查询。以下是我的问题:
SELECT name, location, Date FROM myTable WHERE [Date] < DateAdd(hh, 48, [shipDate]
和其他查询
SELECT name, location, Date FROM myTable WHERE [Date] < DateAdd(d, 90, [shipDate]
我正在尝试将SQL从Oracle 11G移植到Netezza。
下面是我在Oracle中的查询:
SELECT
ID, TEACHERID, CLASS, SECTION, MAJOR, SUPERVISOR, COURSE, SCORE, SCOREDATE,
(select SCORE from STUDENT_SCORES d2 where d2.ID=d1.ID and d2.SCOREDATE (d1.SCOREDATE)-28 and d1.COURSE=d2.COURSE) as PRIORSCORE,
(d1.SCOREDATE)-28 as PR
我们正在尝试将SQL查询从Netezza迁移到雪花。被困在Percent_rank函数中,说明它们在两种情况下的使用有多不同。下面是在Netezza中被触发的查询
Netezza码
Select
percent_rank(x.id,x.rate) within group(order by k.date)
from emp_sales x, emp_order k
where x.inv = k.inv;
雪花转换码
Select
percent_rank() over (partition by x.id,x.rate order by k.date)
from emp_sales x, e
我正在尝试使用SSIS从Sql server2008到Netezza (Nps6)的增量加载。使用Netezza 5.x版本的OLEDB驱动程序。我正在对Maximum insert commit size = 0使用Table or View - Fast Load选项。
在这里,我尝试向Netezza表插入几千条记录。该目标表包含数百万条记录。此数据流任务需要几个小时才能完成。当我查看Netezza Administrator Active Queries时,我可以看到以下查询是问题所在,
SELECT * FROM Destination_Table;
下一步是外部表加载,如下所示:
i
我在Netezza DWH中存储了一些SQL语句。我想从一个新的查询中运行其中的一些(或至少一个)。 我尝试了很多使用Declare之类的方法,但似乎在Netezza上不起作用。 这是一个已存储的查询: SELECT
"CUST-NO (CUNO)" AS KEY_REFERENCE,
'TESTDB' AS REQ_NBR,
CASE
WHEN TRIM("VAT-ID (VATID)") = ''
THEN 'InValid'
使用SAS V 9.xxx。
如何将数据从通用工作库中的表传递到Netezza中的表。
现在,我可以从Netezza中提取数据并存储在工作库中,例如:
/* using “connect to” */
proc sql;
connect to netezza (&us_mkt.);
execute (
drop table &tempdir..SALES_TBL_TST1;
create table &tempdir..SALES_TBL_TST1
as
select * from &tempdir..SALES_TBL;
/*selec
下面是一些Oracle PL/SQL代码,无需使用实际的联接关键字就可以连接表。这看起来像是交叉连接?我将如何转换为Netezza代码?那就是我被困的地方。
SELECT COUNT(*)
FROM TABLE_A A, TABLE_A B
WHERE A.X = 'Y' AND A.PATH LIKE '/A/A/A'
AND B.X = 'Z' AND B.PATH LIKE '/B/B/B';
Oracle交叉连接:
到目前为止,我尝试过的是:
SELECT *
from TABLE_A A
cross join (
我需要帮助获得在SQL Server中的任何特定查询中使用的所有表的列表,无论它是join的一部分还是任何子查询。
我期望输出如下。
假设查询是-> "select A.*,B.col1,B.col2 from table1 A inner join table2 B on A.abc=b.abc“
预期输出是上述查询中使用的表列表。这就是table1,table2
有没有什么方法可以获取用于任意随机查询的表?
谢谢大家--我知道它适用于SQL Server。我也在为Netezza寻找同样的东西。
在Netezza中有没有sys.dm_exec_describe_first_r
我从互联网上的资源中自学了SQL。我有两个SQL查询想要理解。
编写一个SQL查询,从表中获取三个最大薪资。
SELECT distinct Salary from worker a WHERE 3 >= (SELECT count(distinct Salary) from worker b WHERE a.Salary <= b.Salary) order by a.Salary desc;
编写一个SQL查询,从表中获取三分钟的薪水。
SELECT distinct Salary from worker a WHERE 3 >= (SELECT count(distin
Netezza在此查询上出现错误:原因:无效列名'dummy'.
select col1,col2, '' as dummy, max(col3) from table1 group by col1,col2,dummy
如果我从group by子句中移除假人,它就能正常工作。但是根据sql语法,我应该包含组中的所有非聚合列。
我要见flightid,那个航班的机票数,那个航班的工作人员(空中小姐)数。 我可以通过2个子查询查看它们,但无法查看合并视图 select f.flightid, count(ticketnum) from flight f , ticket t
where f.actDepartDateTime is not null
and f.flightid=t.flightid
group by f.flightid
order by 1;
select f.flightid, count(
使用我们公司Netezza框上的几个SQL查询,我试图将多个值连接到一个字符串中。问题是,我需要对这些值进行排序,但Netezza不允许我按未分组的术语进行排序,因为它在分组之后应用排序。
我使用一个名为的UDA,它连接字符串并在它们之间添加一个分隔符。我很确定UDA运行正常(在对其进行调整之后,它不会在内部进行任何排序)。
以下是我的测试数据:
CREATE TABLE TEST (GRP INTEGER, ID INTEGER, DATA VARCHAR(10));
INSERT INTO TEST VALUES (1,3,"Three");
INSERT INTO TES
我的公司正在从Netezza过渡到AWS/Redshift。
Select Column1 + Column2 as Alias1, Alias1 + Column3 as Alias2 from X where Alias1 > 0
Netezza允许我这样做,但是我不能在Redshift中做到这一点。(我也不能在MS SQL中这样做)。我不能在SELECT语句中引用列别名,也不能在WHERE子句中引用它。
这个功能的名称是什么,有没有实现它的方法?如果没有这个功能,我只能写单调乏味的子查询。
谢谢
我对SQL很陌生。
我使用"order“对IBM的netezza上的两个大型表进行排序。
表为:
col1 INT
col2 INT
col3 INT
col4 DOUBLE PRECISION
INSERT INTO mytable
SELECT *
FROM table1 AS t1
ORDER BY t1.col1 , t1.col2, t1.col3, t1.col4 ASC
排序后,我检查前100行:
SELECT *
FROM mytable
LIMIT 100;
但是,每次对前100行运行SQL查询时,都会得到不同的结果。
当我将表导出到txt
我正在查看一些用于分页表的linq to SQL代码。在它中,它需要返回记录的一个子集,以及数据库中的记录总数。代码如下所示:
var query = (from p in MyTable select new {p.HostCable, p.PatchingSet});
int total = query.ToList().Count;
query = query.Skip(5).Take(10);
我想深入了解一下这个函数执行时会发生什么,我看到发生了两个查询-一个是从db中获取所有行,另一个是获取子集。不用说,获取所有记录的性能影响并不好。我猜是"ToList“强制执行查询,然后
我正在尝试使用JDBC驱动程序连接到Netezza数据库,并执行一个简单的SELECT查询。我将nzjdbc.jar文件放在项目的lib文件夹中(使用eclipse),并得到以下错误。
java.lang.ClassNotFoundException: org.netezza.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Nativ
我试图在sql中连接两个表并获取第二个表的计数。第二个表有几个列,其中三个列一起作为主键。我的查询开始于:
SELECT times.*, COUNT(paylog.*) AS `total`
FROM times
LEFT JOIN paylog
ON paylog.type = 'work'
AND paylog.targetID = times.id
我因在count()参数中使用表名而受到责备:
您的SQL语法有一个错误;检查与您的MySQL服务器版本对应的手册,以获得在第1行使用“*)作为total的时间”的正确语法
如果在付费日志表中有一个唯一的列,我可
我正在使用在Netezza数据库上编写和执行SQL查询。使用Netezza的空间功能(本质上与PostGIS的空间功能相同),我执行了一个查询,并返回了一个包含几何图形的结果。以下是查询,以供参考:
SELECT t.SHAPE
FROM (SELECT * FROM OS_AB_PLUS..E12_ADDRESSBASE WHERE POSTCODE = 'RH1 6NE'
AND PAO_START_NUMBER = '14') as a, OS_TOPO..TOPOGRAPHICAREA as t
WHERE inza..ST_Within(a.shap
我想比较netezza中两个不同的数据库表之间的数据。在oracle中,我们可以通过减号运算符来实现这一点。如何在netezza中完成相同的操作。
SELECT CUSTOMER_SRC_ID,CUSTOMER_SRC_DESC FROM CIDB_SIT..CUSTOMER_SRC
MINUS
SELECT CUSTOMER_SRC_ID,CUSTOMER_SRC_DESC FROM EDW_SIT..CUSTOMER_SRC
看起来它在netezza不起作用。有人能帮我在netezza中找到对应的查询吗?
我有一个函数,它应该在Netezza中创建和加载一个表。
proc sql;
connect to odbc as nzCon (noprompt="Driver={NetezzaSQL}; server=actual_server; port=5486; database=myDB; username=xxxx; password=xxxx;");
create table results as select * from connection to nzCon
(SELECT * FROM SASTable WHERE ADDRESS LIKE '2%
在我的SQL脚本中,我希望标准化来自这样一个子查询的值
select y/avg(y) from (
select x*z as y from test_table
)T
我知道这个解决方案会有效的
select y/avg_y from (
select id, x*z as y from test_table
)T
join(
select avg(y) as avg_y
from(
select x*z as y from test_table
)a
)T2
但我不想计算你两次,有什么好主意吗?
我尝试在Netezza中进行列值连接,发现sql-server如下所示:
不过,它对Netezza不起作用。
有什么解决方案吗?
我试过的是
SELECT LEFT(COLUMN_NAME, LENGTH(COLUMN_NAME) - 1)
FROM (
SELECT COLUMN_NAME + ', '
FROM information_schema.columns
WHERE table_name IN ('Employee')
FOR XML PATH ('')
) c (COLUMN_NAME)
谢
我正在运行一个Netezza查询,该查询是从一个select语句创建一个表,该语句返回了近80亿行。以下是查询:
CREATE TABLE
table1 AS
(
SELECT
column1
FROM
table2 qt
WHERE
qt.column1 = '2016-04-04'
UNION ALL
SELECT
column1
FROM
tab
给定任意sql查询:
select foo from bar
这个sql查询可能非常复杂,然后我想知道这个查询的记录大小,所以我将它包装如下:
select count(*) from (select foo from bar) t
我应该这样做吗?我是否应该依赖索引列,而不仅仅是使用count(*)
编辑:
遗憾的是,忘记提到这一点:性能是我主要关注的。
我需要回顾一下我的解决方案,从存储在MPP机器上的表中抽取100个随机行(现在是Netezza,稍后可能是hadoop/等等)。
我对使用Netezza的rand()不感兴趣,因为我希望以后能够复制相同的示例,而且我也不指望setseed()。
我现在使用的解决方案是:
SELECT * FROM MY_TABLE ORDER BY ID % 371, ID % 17, ID % 501, ID LIMIT 100
其中3个数字是我自己的RNG生成的素数。我在正确的轨道上吗?这个“随机”样本够随机的吗?
注意:我不需要它是一个加密强随机样本,我只是想确保每次都选择不同的样本,并且采样是一致的,