0 0

sql 2005 排序取值 聚合 行列转换5

店名        物品        价钱
肯德基      土豆条      20
肯德基      鸡翅膀      15
肯德基      鸭脖子      30
麦当劳      匹萨        46
麦当劳      果汁        15
麦当劳      可乐        2
麦当劳      哇哈哈      4
麦当劳      雪碧        35
中国菜      红烧鱼      65
中国菜      小白菜      10
中国菜      炒鸡蛋      13
中国菜      萝卜条      6


需要如下:
店名     第一贵的       第二贵的    一共     占有的%
肯德基   鸭脖子         鸡翅膀      45          69
麦当劳   匹萨           雪碧        81           96
中国菜   红烧鱼         炒鸡蛋      78          97
2010年6月21日 17:48

2个答案 按时间排序 按投票排序

0 0

看这结果如何。
select a.dianming,wupin,jiaqian,s,jiaqian/s*100
from
(
select *
from tbl_test as a
where wupin in(select top 2 wupin from tbl_test where dianming=a.dianming order by jiaqian desc)
) a
inner join
(
select dianming,sum(jiaqian) as s
from tbl_test as a
where wupin in(select top 2 wupin from tbl_test where dianming=a.dianming order by jiaqian desc)
group by dianming
) b on a.dianming=b.dianming


肯德基 土豆条 20.00000 50.00000 40.0000000000000000
肯德基 鸭脖子 30.00000 50.00000 60.0000000000000000
麦当劳 匹萨 46.00000 81.00000 56.7901234567901235
麦当劳 雪碧 35.00000 81.00000 43.2098765432098765
中国菜 红烧鱼 65.00000 78.00000 83.3333333333333333
中国菜 炒鸡蛋 13.00000 78.00000 16.6666666666666667

2010年6月29日 17:49
0 0

id      dianming wupin  jiaqian
1 肯德基 土豆条 20.00000
2 肯德基 鸡翅膀 15.00000
3 肯德基 鸭脖子 30.00000
4 麦当劳 匹萨 46.00000
5 麦当劳 果汁 15.00000
6 麦当劳 可乐  2.00000
7 麦当劳 哇哈哈 4.00000
8 麦当劳 雪碧 35.00000
9 中国菜 红烧鱼 65.00000
10 中国菜 小白菜 10.00000
11 中国菜 炒鸡蛋 13.00000
12 中国菜 萝卜条 6.00000

select *
from tbl_test as a
where wupin in(select top 2 wupin from tbl_test where dianming=a.dianming order by jiaqian desc)


我只能做到这份上,等着你有更好的方案。

2010年6月29日 17:44

相关推荐

    sql server 行列转换

    ### SQL Server 行列转换知识点解析 #### 一、行列转换概述 在处理数据库查询时,我们经常会遇到需要将表中的行数据转换为列数据的需求,这种操作通常被称为“行列转换”。例如,当我们需要汇总不同类别的数据并将...

    SQL SERVER 2005+ 版本行列转换数据脚本

    ### SQL Server 2005+ 版本行列转换数据脚本知识点解析 #### 一、数据表创建脚本分析 根据题目中的信息,我们首先关注到的是一个名为`dduser`的数据表创建脚本。该脚本是在SQL Server 2005及以上版本中使用的。...

    SQL 2008行列转换的pivot

    ### SQL 2008 行列转换 (Pivot) 的动态实现 #### 知识点一:行列转换(Pivot)的概念与应用场景 在数据库查询中,有时我们需要将数据表中的行转换为列,或者将列转换为行,这种操作被称为行列转换。行列转换在报表...

    Sql语句实现表的行列转换,行转列,列转行

    ### SQL语句实现表的行列转换,行转列,列转行 在处理数据库时,我们经常需要对数据进行各种变换以适应不同的分析需求。其中,“行列转换”就是一种非常实用的功能,它可以帮助我们将表中的行数据转换为列数据,...

    C#扩展SQLServer 2005 字符串聚合函数

    在SQL Server 2005中,我们经常使用内置的聚合函数如SUM()、COUNT()等来处理数据集合。然而,有时系统内置的聚合函数无法满足特定需求,此时就需要利用C#来扩展SQL Server的功能,创建自定义的聚合函数,特别是针对...

    SQL语句行列转换(附带数据库、表、视图操作)

    SQL 语句行列转换(附带数据库、表、视图操作) SQL 语句行列转换是数据库管理系统中的一种常见操作,它可以将数据从行转换为列,或者从列转换为行。在这个过程中,需要使用数据库管理语言(Database Management ...

    SQL2000 和 SQL2005 下 行列转换 示例 - freeliver54 - 博客园.pdf

    ### SQL2000 和 SQL2005 下行转列转换示例解析 #### 一、背景介绍 本文档提供了在SQL Server 2000和SQL Server 2005两个版本中进行行转列操作的具体示例。行转列是一种常见的数据处理方式,用于将表格中的行数据...

    oracle sql 行列转换

    在Oracle SQL中,行列转换是一种常见的数据操作需求,主要用于将数据表中的行转换为列,或将列转换为行,以此来满足不同的数据展示或分析需求。这种转换在处理多维度数据、汇总数据或是进行复杂查询时特别有用。下面...

    修改SQL数据库排序规则修改表栏位排序规则

    修改SQL数据库排序规则修改表栏位排序规则 修改SQL数据库排序规则: 1.修改为单用户模式 2.然后关闭所有的查询窗口,修改Options的Collocation属性,如:Chinese_PRC_90_CI_AS 3.再修改为多用户模式 修改表栏位...

    SqlServer自定义多参数聚合函数实例代码

    在SQL Server中,聚合函数是用于对一组值进行计算并返回单个值的函数,比如SUM、AVG、MAX和MIN等。然而,SQL Server的标准内置聚合函数可能无法满足所有复杂的数据处理需求,这时我们就需要自定义聚合函数。标题提到...

    通过SQL语句实现行列转换的几种方法

    ### 通过SQL语句实现行列转换的几种方法 在日常工作中,我们经常需要处理的数据结构并不总是按照我们期望的方式组织的。特别是在制作自定义报表或进行产品开发时,经常会遇到需要将数据从一种布局转换到另一种布局...

    行列转换SQL存储过程代码

    ### 行列转换SQL存储过程代码解析 #### 核心知识点概述 本篇文章将深入探讨一个SQL存储过程的实现方式,该存储过程主要用于完成“行转列”(即行列转换)的操作。通过这种方式,可以有效地将数据库表中的行数据...

    SQL行列转换 Pivot UnPivot

    Pivot 和 UnPivot 是 SQL Server 2005 中引入的两个语法,用于实现行列转换。 Pivot Pivot 语法的主要作用是将列值旋转为列名,即行转列。其基本语法为: ``` SELECT * FROM table_source PIVOT (聚合函数(value_...

    SqlServer自定义字符聚合

    在SQL Server中,标准的内置聚合函数如SUM、AVG、COUNT等提供了对数值和数量数据的基本处理。但有时我们可能需要对字符数据进行特定的聚合操作,例如合并字符串、去除重复字符等,这时SQL Server的内置聚合函数就...

    SQLServer行列互转实现思路(聚合函数)

    在SQL Server中,行列互转是一种常见的数据处理需求,它能帮助我们以更直观的方式展示数据。本篇文章将深入探讨如何使用聚合函数Pivot和Unpivot来实现这一目标,特别是针对SQL Server数据库。 首先,让我们了解什么...

    SQL2005精简版一键安装 sql server2005一键安装

    "SQL2005精简版一键安装"是指通过一个简化的过程来快速安装SQL Server 2005 Express Edition,大大降低了安装的复杂性。 通常,SQL Server的安装过程包括多个步骤,如接受许可协议、选择安装类型、配置服务器实例、...

    SQL 数据行列转换

    ### SQL 数据行列转换 #### 知识点概览 1. **SQL Server中的行列转换**:介绍如何在SQL Server环境中利用内置函数实现数据从行到列的转换。 2. **FOR XML PATH() 函数的应用**:详细解释FOR XML PATH()函数在行列...

    SqlServer2005 打开 SqlServer2008 mdf文件

    Sql Server 2005 打开 Sql Server 2008 mdf 文件数据库转换是指将 Sql Server 2008 中的数据库文件(mdf 文件)转换为 Sql Server 2005 可以识别的格式,以便在 Sql Server 2005 中使用。这种转换过程需要使用 Sql ...

Global site tag (gtag.js) - Google Analytics