双色球得一些基础分析[sql]

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介:

代码是心血来潮编写得,就象买彩票一样,为国家做贡献;
首先建立一个表,表得数据可以从 福利彩票网站上获得,自己一个一个得录入进去先;

表结构为:

if exists ( select * from dbo.sysobjects where id = object_id(N ' [dbo].[tbSrcData] ') and OBJECTPROPERTY(id, N ' IsUserTable ') = 1)
drop table [ dbo ]. [ tbSrcData ]
GO

CREATE TABLE [ dbo ]. [ tbSrcData ] (
[ Q ] [ varchar ] ( 10) NOT NULL , -- 期数
[ F1 ] [ int ] NULL , -- 1号球数
[ F2 ] [ int ] NULL , -- 2号球数
[ F3 ] [ int ] NULL , -- 3号球数
[ F4 ] [ int ] NULL , -- 4号球数
[ F5 ] [ int ] NULL , -- 5号球数
[ F6 ] [ int ] NULL , -- 6号球数
[ F7 ] [ int ] NULL , -- 7号兰球数
[ FXQT ] [ int ] NULL -- 快乐星期天球数
) ON [ PRIMARY ]
GO

ALTER TABLE [ dbo ]. [ tbSrcData ] WITH NOCHECK ADD
CONSTRAINT [ PK_tbSrcData ] PRIMARY KEY CLUSTERED
(
[ Q ]
) ON [ PRIMARY ]
GO

CREATE UNIQUE INDEX [ IX_tbSrcData ] ON [ dbo ]. [ tbSrcData ]( [ Q ]) WITH IGNORE_DUP_KEY ON [ PRIMARY ]
GO


运行以下代码到查询分析器内:

-- select * from tbSrcData


-- 求单双

Select ZZ. *, 6 -as [ ]
from(
select
*,
( case when (F1 % 2) <> 0 then 1 else 0 end) +
( case when (F2 % 2) <> 0 then 1 else 0 end) +
( case when (F3 % 2) <> 0 then 1 else 0 end) +
( case when (F4 % 2) <> 0 then 1 else 0 end) +
( case when (F5 % 2) <> 0 then 1 else 0 end) +
( case when (F6 % 2) <> 0 then 1 else 0 end) as
from tbSrcData A
) AS ZZ

Select ZZ.单, 6 -as [ ]
into #TTT
from(
select
*,
( case when (F1 % 2) <> 0 then 1 else 0 end) +
( case when (F2 % 2) <> 0 then 1 else 0 end) +
( case when (F3 % 2) <> 0 then 1 else 0 end) +
( case when (F4 % 2) <> 0 then 1 else 0 end) +
( case when (F5 % 2) <> 0 then 1 else 0 end) +
( case when (F6 % 2) <> 0 then 1 else 0 end) as
from tbSrcData A
) AS ZZ

select Sum(单) as a, Sum(双) as b FROM #TTT
drop table #TTT


set nocount on
-- 求出现率最高数
declare @iCount int
declare @dnySql varchar( 1024)
declare @F1 int, @F2 int, @F3 int, @F4 int, @F5 int, @F6 int, @F7 int, @Q varchar( 10)
declare @WI int
declare @IsNext bit
declare @ILinkCount int
declare @blueNum int

set @iCount = 1
Create Table #TmpTable(
Num Int null
)
while @iCount <= 7
begin
set @dnySql = ' Insert Into #TmpTable select F ' + Convert( Varchar, @iCount) + ' from tbSrcData '
Exec( @dnySql)
set @iCount = @iCount + 1
end

Select Top 6 Num as 号码, Count( *) as 出现次数, ( select Count( *) from tbSrcData) / Count( *) AS 出现期数, ( case when(Num % 2 <> 0) then ' ' else ' ' end) as 类型
from #TmpTable
Group by Num
Order by Count( *) Desc

Select Num as 号码, Count( *) as 出现次数, ( select Count( *) from tbSrcData) / Count( *) AS 出现期数, ( case when(Num % 2 <> 0) then ' ' else ' ' end) as 类型
from #TmpTable
Group by Num
Order by Count( *) asc


set @blueNum = 0
select @blueNum = BZ.F7 from(
select Top 1 F7 from tbSrcData group by F7 order by Count( *) desc
) AS BZ
select @blueNum as ' 兰色号码 '

Select IDENTITY( int, 1, 1) as AutoID,AZ.号码
Into #TmpListTable
from (
Select Top 6 Num as 号码
from #TmpTable
Group by Num
Order by Count( *) Desc
) AS AZ
order by AZ.号码 asc

Drop table #TmpTable

create table # Table(
Q varchar( 10) null,f1 int null,f2 int null,f3 int null,f4 int null,f5 int null,f6 int null,f7 int null,fxqt int null
)

Insert into # Table(Q,fxqt) values( ' 最高频率 ', 0)



set @WI = 1
while @WI <=( Select Max(AutoID) from #TmpListTable)
begin
set @dnySql = ' Update #Table set f ' + Cast( @WI as Varchar) + ' =(select 号码 from #TmpListTable where AutoId = ' + Cast( @WI as varchar) + ' ) '
exec( @dnySql)
set @WI = @WI + 1
end

update # Table set f7 = @blueNum

drop table #TmpListTable

select * from # Table

Select IDENTITY( int, 1, 1) as AutoID, *
Into #TmpLinkTable
from
(
select Q,F1,F2,F3,F4,F5,F6,F7,FXQT, 0 as FLINK from tbSrcData
union all
select Q,F1,F2,F3,F4,F5,F6,F7,FXQT, 0 as FLink from # Table
) as BYZ

drop table # Table

set @WI = 1
while @WI <=( Select Max(AutoID) from #TmpLinkTable)
begin
select @Q =Q, @F1 =F1, @F2 =F2, @F3 =F3, @F4 =F4, @F5 =F5, @F6 =F6, @F7 =F7 from #TmpLinkTable where AutoID = @WI
set @IsNext = 0
set @ILinkCount = 0
set @IsNext = case when ABS( @F1 - @F2) = 1 then 1 else 0 end
if @IsNext = 1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS( @F2 - @F3) = 1 then 1 else 0 end
if @IsNext = 1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS( @F3 - @F4) = 1 then 1 else 0 end
if @IsNext = 1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS( @F4 - @F5) = 1 then 1 else 0 end
if @IsNext = 1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS( @F5 - @F6) = 1 then 1 else 0 end
if @IsNext = 1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS( @F6 - @F7) = 1 then 1 else 0 end
if @IsNext = 1 set @ILinkCount = @ILinkCount + 1

Update #TmpLinkTable set FLINK = @ILinkCount where AutoID = @WI
set @WI = @WI + 1
end

select * from #TmpLinkTable

-- Select (Select Count(*) from #TmpLinkTable ) / (select Sum(FLink) from #TmpLinkTable) as 连数出现频率

select *,( Select Count( *) from #TmpLinkTable ) / ( select Sum(FLink) from #TmpLinkTable) as 平均多少期出现连号,
(f1 +f2 +f3 +F4 +F5 +f6 +f7) as
Into #TmpSumTable
from #TmpLinkTable

drop table #TmpLinkTable

select
最高期 = ( select Top 1 Q from #TmpSumTable order bydesc),
最高和 = ( select Top 1from #TmpSumTable order bydesc),
最低期 = ( select Top 1 Q from #TmpSumTable order byasc),
最低和 = ( select Top 1from #TmpSumTable order byasc)

select ( 152 - 67) / 3
select 67

select a. *,
[ ] = abs( a.和 - ( Selectfrom #TmpSumTable where AutoId =(a.AutoID + 1))),
[ 最大最小差百分比 ] =
(
cast( abs( a.和 - ( Selectfrom #TmpSumTable where AutoId =(a.AutoID + 1))) as float)
/
cast(
( select Top 1from #TmpSumTable order bydesc) -
( select Top 1from #TmpSumTable order byasc)
as float)
) * 100
from #TmpSumTable a order by Q ASC
-- select
--
3 , 9 , 12 , 15 , 16 , 4 , 24,
--
3 + 9 + 12 + 15 + 16 + 4 + 24

-- select 85 * 0.75
--
select 63.75 / 85

Drop table #TmpSumTable



本文转自suifei博客园博客,原文链接http://www.cnblogs.com/Chinasf/archive/2005/10/23/260502.html,如需转载请自行联系原作者 
相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
8月前
|
SQL 索引
19. 一个SQL语句执行很慢, 如何分析
该内容介绍了如何分析执行慢的SQL语句。首先启用慢查询日志或使用命令获取慢查询的SQL。然后利用`EXPLAIN`命令分析,关注其中的`select_type`, `type`, 和 `extra`字段。`select_type`涉及子查询和联合查询的类型,`type`表示查询优化器使用的访问类型,性能从上到下递减,`extra`字段提供额外信息,如是否使用索引等。
61 0
|
3月前
|
SQL 存储 数据可视化
手机短信SQL分析技巧与方法
在手机短信应用中,SQL分析扮演着至关重要的角色
|
8月前
|
SQL 数据可视化 算法
SQL Server聚类数据挖掘信用卡客户可视化分析
SQL Server聚类数据挖掘信用卡客户可视化分析
|
5月前
|
前端开发 Java JSON
Struts 2携手AngularJS与React:探索企业级后端与现代前端框架的完美融合之道
【8月更文挑战第31天】随着Web应用复杂性的提升,前端技术日新月异。AngularJS和React作为主流前端框架,凭借强大的数据绑定和组件化能力,显著提升了开发动态及交互式Web应用的效率。同时,Struts 2 以其出色的性能和丰富的功能,成为众多Java开发者构建企业级应用的首选后端框架。本文探讨了如何将 Struts 2 与 AngularJS 和 React 整合,以充分发挥前后端各自优势,构建更强大、灵活的 Web 应用。
67 0
|
5月前
|
SQL 数据采集 数据挖掘
为什么要使用 SQL 函数?详尽分析
【8月更文挑战第31天】
66 0
|
5月前
|
SQL 数据采集 算法
【电商数据分析利器】SQL实战项目大揭秘:手把手教你构建用户行为分析系统,从数据建模到精准营销的全方位指南!
【8月更文挑战第31天】随着电商行业的快速发展,用户行为分析的重要性日益凸显。本实战项目将指导你使用 SQL 构建电商平台用户行为分析系统,涵盖数据建模、采集、处理与分析等环节。文章详细介绍了数据库设计、测试数据插入及多种行为分析方法,如购买频次统计、商品销售排名、用户活跃时间段分析和留存率计算,帮助电商企业深入了解用户行为并优化业务策略。通过这些步骤,你将掌握利用 SQL 进行大数据分析的关键技术。
265 0
|
5月前
|
SQL 数据挖掘 BI
【超实用技巧】解锁SQL聚合函数的奥秘:从基础COUNT到高级多表分析,带你轻松玩转数据统计与挖掘的全过程!
【8月更文挑战第31天】SQL聚合函数是进行数据统计分析的强大工具,可轻松计算平均值、求和及查找极值等。本文通过具体示例,展示如何利用这些函数对`sales`表进行统计分析,包括使用`COUNT()`、`SUM()`、`AVG()`、`MIN()`、`MAX()`等函数,并结合`GROUP BY`和`HAVING`子句实现更复杂的数据挖掘需求。通过这些实践,你将学会如何高效地应用SQL聚合函数解决实际问题。
68 0
|
5月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
6月前
|
SQL 存储 大数据
SQL中DISTINCT关键字的使用与性能影响分析
SQL中DISTINCT关键字的使用与性能影响分析
|
8月前
|
SQL HIVE UED
【Hive SQL 每日一题】分析电商平台的用户行为和订单数据
作为一名数据分析师,你需要分析电商平台的用户行为和订单数据。你有三张表:`users`(用户信息),`orders`(订单信息)和`order_items`(订单商品信息)。任务包括计算用户总订单金额和数量,按月统计订单,找出最常购买的商品,找到平均每月最高订单金额和数量的用户,以及分析高消费用户群体的年龄和性别分布。通过SQL查询,你可以实现这些分析,例如使用`GROUP BY`、`JOIN`和窗口函数来排序和排名。
420 2