作者 作品 点击PV
A A作品名1 15
B B作品名1 12
B B作品名2 11
C C作品名1 10
C C作品名2 9
A A作品名2 1
之后
作者 作品 点击PV 作者作品PV和 作者作品数
B B作品名1 12 23 2
B B作品名2 11 23 2
C C作品名1 10 19 2
C C作品名2 9 19 2
A A作品名1 15 16 2
A A作品名2 1 16 2
把相同作者的“点击PV”进行累加求和生成额外一列“作者作品PV和”,然后按其排序
9 个解决方案
#1
create table ol
(作者 char(1), 作品 varchar(10), 点击PV int)
insert into ol
select 'A', 'A作品名1', 15 union all
select 'B', 'B作品名1', 12 union all
select 'B', 'B作品名2', 11 union all
select 'C', 'C作品名1', 10 union all
select 'C', 'C作品名2', 9 union all
select 'A', 'A作品名2', 1
select a.*,b.作者作品PV和,b.作者作品数
from ol a
inner join
(select 作者,sum(点击PV) '作者作品PV和',count(1) '作者作品数'
from ol group by 作者) b on a.作者=b.作者
order by b.作者作品PV和 desc,b.作者作品数 desc
/*
作者 作品 点击PV 作者作品PV和 作者作品数
---- ---------- ----------- ----------- -----------
B B作品名1 12 23 2
B B作品名2 11 23 2
C C作品名1 10 19 2
C C作品名2 9 19 2
A A作品名1 15 16 2
A A作品名2 1 16 2
(6 row(s) affected)
*/
#2
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([作者] varchar(1),[作品] varchar(8),[点击PV] int)
insert [tb]
select 'A','A作品名1',15 union all
select 'B','B作品名1',12 union all
select 'B','B作品名2',11 union all
select 'C','C作品名1',10 union all
select 'C','C作品名2',9 union all
select 'A','A作品名2',1
go
select a.*,b.作者作品PV和,b.作者作品数
from tb a
join
(
select 作者,sum(点击PV) as 作者作品PV和,count(1) as 作者作品数
from tb
group by 作者
) b
on a.作者=b.作者
order by b.作者作品PV和 desc
/**
作者 作品 点击PV 作者作品PV和 作者作品数
---- -------- ----------- ----------- -----------
B B作品名1 12 23 2
B B作品名2 11 23 2
C C作品名1 10 19 2
C C作品名2 9 19 2
A A作品名1 15 16 2
A A作品名2 1 16 2
(6 行受影响)
**/
#3
我已有table a,是存在本机的.txt 文件: $PATH/author.txt
语句该如何写?
语句该如何写?
#4
/*
[创建]:
D:\author.txt
[内容]:
作者 作品 点击PV
A A作品名1 15
B B作品名1 12
B B作品名2 11
C C作品名1 10
C C作品名2 9
A A作品名2 1
*/
create table ol
(作者 char(1), 作品 varchar(10), 点击PV int)
bulk insert ol
from 'D:\author.txt'
with
( FIELDTERMINATOR =' ',
ROWTERMINATOR ='\n',
KILOBYTES_PER_BATCH=5000,
firstrow=2
)
select * from ol
/*
作者 作品 点击PV
---- ---------- -----------
A A作品名1 15
B B作品名1 12
B B作品名2 11
C C作品名1 10
C C作品名2 9
A A作品名2 1
(6 row(s) affected)
*/
select a.*,b.作者作品PV和,b.作者作品数
from ol a
inner join
(select 作者,sum(点击PV) '作者作品PV和',count(1) '作者作品数'
from ol group by 作者) b on a.作者=b.作者
order by b.作者作品PV和 desc,b.作者作品数 desc
/*
作者 作品 点击PV 作者作品PV和 作者作品数
---- ---------- ----------- ----------- -----------
B B作品名1 12 23 2
B B作品名2 11 23 2
C C作品名1 10 19 2
C C作品名2 9 19 2
A A作品名1 15 16 2
A A作品名2 1 16 2
(6 row(s) affected)
*/
#5
如果“作者作品PV和”是18位的小数,比如0.000791571974605011
我定义float 或 double 类型,都出现语法错误
*/
命令出错, 行: 2 列: 69
错误报告:
SQL 错误: ORA-00922: 选项缺失或无效
00922. 00000 - "missing or invalid option"
*Cause:
*Action:
是什么问题?
我定义float 或 double 类型,都出现语法错误
*/
命令出错, 行: 2 列: 69
错误报告:
SQL 错误: ORA-00922: 选项缺失或无效
00922. 00000 - "missing or invalid option"
*Cause:
*Action:
是什么问题?
#6
ORA-00922: 选项缺失或无效
楼主是用Oracle?
楼主是用Oracle?
#7
嗯,有什么办法吗?跪谢
#8
NUMBER(17,18) 或 NUMBER(19,18) 也不行
#9
我用的sql developer,所以出现了ora-00922 的错误?
#1
create table ol
(作者 char(1), 作品 varchar(10), 点击PV int)
insert into ol
select 'A', 'A作品名1', 15 union all
select 'B', 'B作品名1', 12 union all
select 'B', 'B作品名2', 11 union all
select 'C', 'C作品名1', 10 union all
select 'C', 'C作品名2', 9 union all
select 'A', 'A作品名2', 1
select a.*,b.作者作品PV和,b.作者作品数
from ol a
inner join
(select 作者,sum(点击PV) '作者作品PV和',count(1) '作者作品数'
from ol group by 作者) b on a.作者=b.作者
order by b.作者作品PV和 desc,b.作者作品数 desc
/*
作者 作品 点击PV 作者作品PV和 作者作品数
---- ---------- ----------- ----------- -----------
B B作品名1 12 23 2
B B作品名2 11 23 2
C C作品名1 10 19 2
C C作品名2 9 19 2
A A作品名1 15 16 2
A A作品名2 1 16 2
(6 row(s) affected)
*/
#2
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([作者] varchar(1),[作品] varchar(8),[点击PV] int)
insert [tb]
select 'A','A作品名1',15 union all
select 'B','B作品名1',12 union all
select 'B','B作品名2',11 union all
select 'C','C作品名1',10 union all
select 'C','C作品名2',9 union all
select 'A','A作品名2',1
go
select a.*,b.作者作品PV和,b.作者作品数
from tb a
join
(
select 作者,sum(点击PV) as 作者作品PV和,count(1) as 作者作品数
from tb
group by 作者
) b
on a.作者=b.作者
order by b.作者作品PV和 desc
/**
作者 作品 点击PV 作者作品PV和 作者作品数
---- -------- ----------- ----------- -----------
B B作品名1 12 23 2
B B作品名2 11 23 2
C C作品名1 10 19 2
C C作品名2 9 19 2
A A作品名1 15 16 2
A A作品名2 1 16 2
(6 行受影响)
**/
#3
我已有table a,是存在本机的.txt 文件: $PATH/author.txt
语句该如何写?
语句该如何写?
#4
/*
[创建]:
D:\author.txt
[内容]:
作者 作品 点击PV
A A作品名1 15
B B作品名1 12
B B作品名2 11
C C作品名1 10
C C作品名2 9
A A作品名2 1
*/
create table ol
(作者 char(1), 作品 varchar(10), 点击PV int)
bulk insert ol
from 'D:\author.txt'
with
( FIELDTERMINATOR =' ',
ROWTERMINATOR ='\n',
KILOBYTES_PER_BATCH=5000,
firstrow=2
)
select * from ol
/*
作者 作品 点击PV
---- ---------- -----------
A A作品名1 15
B B作品名1 12
B B作品名2 11
C C作品名1 10
C C作品名2 9
A A作品名2 1
(6 row(s) affected)
*/
select a.*,b.作者作品PV和,b.作者作品数
from ol a
inner join
(select 作者,sum(点击PV) '作者作品PV和',count(1) '作者作品数'
from ol group by 作者) b on a.作者=b.作者
order by b.作者作品PV和 desc,b.作者作品数 desc
/*
作者 作品 点击PV 作者作品PV和 作者作品数
---- ---------- ----------- ----------- -----------
B B作品名1 12 23 2
B B作品名2 11 23 2
C C作品名1 10 19 2
C C作品名2 9 19 2
A A作品名1 15 16 2
A A作品名2 1 16 2
(6 row(s) affected)
*/
#5
如果“作者作品PV和”是18位的小数,比如0.000791571974605011
我定义float 或 double 类型,都出现语法错误
*/
命令出错, 行: 2 列: 69
错误报告:
SQL 错误: ORA-00922: 选项缺失或无效
00922. 00000 - "missing or invalid option"
*Cause:
*Action:
是什么问题?
我定义float 或 double 类型,都出现语法错误
*/
命令出错, 行: 2 列: 69
错误报告:
SQL 错误: ORA-00922: 选项缺失或无效
00922. 00000 - "missing or invalid option"
*Cause:
*Action:
是什么问题?
#6
ORA-00922: 选项缺失或无效
楼主是用Oracle?
楼主是用Oracle?
#7
嗯,有什么办法吗?跪谢
#8
NUMBER(17,18) 或 NUMBER(19,18) 也不行
#9
我用的sql developer,所以出现了ora-00922 的错误?