SQL排序技巧:时间与姓名双字段排序详解及实例
SQL语句怎么写?先按时间排序,再按姓名排序?
从表名orderBYclientasc、taskdate、IDdesc中选择client、id、任务日期(如果client是降序排列,则将orderby替换为groupby,将asc替换为desc,将ID替换为升序,将desc替换为asc)
修改orderby后面写的order中的字段就可以了,用逗号分隔
select*fromtableorderbytime,name
select*from表orderbytimeasc,nameasc
select*from表orderbytimedesc,namedesc
sélectionner*from表orderbytimeasc,namedesc
select*fromtableorderbytimedesc,nameasc
(注:asc表示升序,desc表示降序,默认为升序sort方法没有明确说明)
类似的语法是groupby,当按多个字段分组时,多个字段也是按顺序写在groupby后面,并用逗号分隔。
示例为:
selecttime,name,sum(*)fromtablegroupbytime,name
>扩展信息
SQL可以分为两部分:数据操作语言(DML)和数据定义语言(DDL)。
SQL(结构化查询语言)是一种执行查询的语法。
但SQL语言还包含更新、插入和删除记录的语法。
查询和更新语句构成SQL的DML部分:
SELECT-从数据库表中获取数据
UPDATE-更新数据库表中的数据
DELETE-从数据库表中删除数据
INSERTINTO-在数据库表中插入数据data
SQL的数据定义语言(DDL)部分使我们能够创建或删除表。
我们还可以定义索引(键)、指定表之间的链接以及在表之间施加约束。
SQL中最重要的DDL语句:
CREATEDATABASE-创建新数据库
ALTERDATABASE-修改数据库
CREATETABLE-创建一个新表
ALTERTABLE-修改(更改)数据库表
DROPTABLE-删除表
CREATEINDEX-创建索引(键为搜索)
DROPINDEX-删除索引
参考文档百度百科-SQL语句
把两张表的数据按时间排序查询的SQL语句
表a是传入表,表b是传出表。它们都有一个日期字段mkrdat,货物编号是Goodid,数量字段可以是这样的selectgoodsid,qty,mkrdatfrom。
(选择商品,数量,mkrdatfromawheregoodsid='查询商品'unionallselectgoodsid,数量,mkrdatfrombwheregoodsid='查询商品')aaorderbygoodsid,mkrdat
sql按照日期排序,同一日期自动从1开始编号。
oracle数据库:
使用解析函数排序:row_number()OVER()
SELECT
row_number()OVER(partitionBYt.trandateORDERBYt.tranamt)"NO",
t.trandate,
nvl(t.tranamt,'小计'),
求解(COUNT(*),'1','',COUNT(*))"计数",
解码(SUM(to_number(t.tranamt)),to_number(t.tranamt),'',sum(_number(t.tranamt)))"小计"
FROM测试表tGROUPBY汇总(trandate,tranamt);