kdb+和一般数据库还是很多不同

[复制链接]
查看11 | 回复9 | 2012-5-21 10:19:41 | 显示全部楼层 |阅读模式
//sum int超界就算不出来了
q)t1 : ([] name:`symbol$(); age:`int$())
q)t1
name age
--------
q)`t1 insert (10#`abc;til 10)
0 1 2 3 4 5 6 7 8 9
q)t1
name age
--------
abc0
abc1
abc2
abc3
abc4
abc5
abc6
abc7
abc8
abc9
//少量数据是正常的
q)select sage:sum age from t1
sage
----
45
q)delete from `t1
`t1
q)t1
name age
--------
//插入大量数据
q)\t `t1 insert (1000000#`abc;til 1000000)
31
q)select sa:sum age from t1
sa
--
q)t1[1]
name| `abc
age | 1i
q)t1[999999]
name| `abc
age | 999999i
q)select count name from t1
name
-------
1000000
q)select count age from t1
age
-------
1000000
q)select sum age from t1
age
---
q)select avg age from t1
age
--------
499999.5

回复

使用道具 举报

千问 | 2012-5-21 10:19:41 | 显示全部楼层
//强制类型转换为long就可以了
q)select sum age from t1 where age<10
age
---
45
q)select sum "j"$age from t1 where age<10
age
---
45
q)select sum "j"$age from t1
age
------------
499999500000
回复

使用道具 举报

千问 | 2012-5-21 10:19:41 | 显示全部楼层
//速度还是比较快的
q)\t temp:select count name by age mod 10 from t1
62
q)temp
x| name
-| ------
0| 100000
1| 100000
2| 100000
3| 100000
4| 100000
5| 100000
6| 100000
7| 100000
8| 100000
9| 100000
回复

使用道具 举报

千问 | 2012-5-21 10:19:41 | 显示全部楼层
TIOBE编程语言社区排行榜(2016年5月)
回复

使用道具 举报

千问 | 2012-5-21 10:19:41 | 显示全部楼层
//想按数字个数排序,结果不对
q)count 12
1
q)count "12"
2
q)\t temp:select count name by count string age mod 10 from t1
93
q)temp
x| name
-------| -------
1000000| 1000000
q)\t temp:select count name by count string age from t1
203
q)temp
age| name
-------| -------
1000000| 1000000
q)count string 992
3

回复

使用道具 举报

千问 | 2012-5-21 10:19:41 | 显示全部楼层
本帖最后由 〇〇 于 2016-5-9 16:30 编辑
〇〇 发表于 2016-5-9 12:17
//想按数字个数排序,结果不对
q)count 12
1

//换用log求位数
q)\t temp1:select count name by ceiling (log age % log 10)+1 from t1
203
q)temp1
age| name
---| ------
| 1
1| 2
2| 4
3| 11
4| 29
5| 79
6| 216
7| 587
8| 1597
9| 4338
10 | 11795
11 | 32059
12 | 87148
13 | 236891
14 | 625243
//上面是错的,运算优先级
//正确的写法
q)\t temp1:select count name by ceiling (1|(log (age+0.1))%(log 10)) from t1
109
q)temp1
x| name
-| ------
1| 10
2| 90
3| 900
4| 9000
5| 90000
6| 900000

回复

使用道具 举报

千问 | 2012-5-21 10:19:41 | 显示全部楼层
看了Primer,找到一种匪夷所思的求长度
"source"?"a"
得6,因为找不到,找到就返回索引
回复

使用道具 举报

千问 | 2012-5-21 10:19:41 | 显示全部楼层
〇〇 发表于 2016-5-9 12:17
//想按数字个数排序,结果不对
q)count 12
1

//终于摸索出了正确的写法
q)t.name
`Dent`Beeblebrox`Prefect
q)count t.name
3
q)count each t.name
1 1 1
q)count each string t.name
4 10 7
q)t
name iq
--------------
Dent 98
Beeblebrox 42
Prefect126
q)select name,iq,count each string t.name from t
name iqname1
--------------------
Dent 984
Beeblebrox 4210
Prefect126 7
q)t1 : ([] name:`symbol$(); age:`int$())
q)\t `t1 insert (1000000#`abc;til 1000000)
31
q)\t temp:select count name by count each string age from t1 where age<15
15
q)temp
age| name
---| ----
1| 10
2| 5
q)\t temp:select count name by count each string age from t1
281
q)temp
age| name
---| ------
1| 10
2| 90
3| 900
4| 9000
5| 90000
6| 900000
回复

使用道具 举报

千问 | 2012-5-21 10:19:41 | 显示全部楼层
本帖最后由 〇〇 于 2016-5-10 16:24 编辑
//摸索了半天才理解了do循环
n:5
do[-1+f:r:n;r:r*f-:1]
-1+f是终止条件,第一次把f,n都赋值为n
然后每次循环 f:f-1, r:r*f
最后各个变量
q)f
1
q)r
120
q)n
5

回复

使用道具 举报

千问 | 2012-5-21 10:19:41 | 显示全部楼层
本帖最后由 〇〇 于 2016-5-14 18:31 编辑
//显示汉字的办法
q)sym:`apples`bananas`oranges
q)name:(`$"蘋果";`$"香蕉";`$"橙")
q)text:("每日一蘋果, 醫生遠離我";"香蕉船是一道可口的甜品";"從佛羅里達州來的鮮橙很甜美")
q)select sym,name from t
't
q)t:([]sym;name;text)
q)t
sym name text
..
-----------------------------------------------------------------------------..
apples蘋果 "\303\277\310\325\322\273\314O\271\373, \341t\311\372\337h\353x\..
bananas 香蕉 "\317\343\275\266\264\254\312\307\322\273\265\300\277\311\277\33..
oranges 橙 "\217\304\267\360\301_\300\357\337_\326\335\201\355\265\304\365r..
q)-1 t text
'type
q)-1 text 0
每日一蘋果, 醫生遠離我
-1
q)-1 text
每日一蘋果, 醫生遠離我
香蕉船是一道可口的甜品
從佛羅里達州來的鮮橙很甜美
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行